<B_DOC ID="国际新闻"></B_DOC>
<B_TIT>88888</B_TIT>我该如何写正则匹配.取得<>中的值(也就是B_DOC或者B_TIT) 属性的值(ID值)
还有中间的值(88888)
<B_TIT>88888</B_TIT>我该如何写正则匹配.取得<>中的值(也就是B_DOC或者B_TIT) 属性的值(ID值)
还有中间的值(88888)
解决方案 »
- 仿百度输入搜索关健词时下拉提示
- 求救高手如何在title里调用文件的标题
- 请问如何让页面不停刷新增加网站或论坛的PV(页面访问)值呢?
- 重写的GridView 焦点问题
- ASP.NET做三层(或者多层)的架构讨论
- 各位老大,在线等啊,在win2003下的做好的,拷到服务器上win2000就不行啊,按纽点击没动静,是怎么回事啊
- 急求解决方案
- 告急:使用asp.net+oracle8i,工程运行一段时间,出现怪问题!请指教!
- 还有这么个问题,大家帮忙看看!!我就不明白了,怎么这么多问题!!
- 关于session的一些问题
- ASP.NET 中 下载要怎么做,中文乱码 怎么办
- 急 如何设置session过期时间
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title></title>
</head>
<body><table width="766" border="0" cellspacing="0" cellpadding="0"> <tr>
<td width="300" height="26" class="nav">
<BBB_Curpage VALUE=">>" ONLY="false" AUTOLINK="true" TARGET="_blank">当前位置</BBB_Curpage>
</td>
</tr>
<tr>
<td height="30" class="contentTitle">
<BBB_Document FIELD="TITLE" DATEFORMAT="false" AUTOFORMATTYPE="HTML">文档详细信息</BBB_Document>
</td>
</tr>
<tr>
<td valign="top">
<BBB_COLUMN id=DOCPUBTIME>发布时间</BBB_COLUMN>
</td>
</tr>
<tr>
<td valign="top">
<BBB_Document FIELD="DOCCON" AUTOFORMATTYPE="HTML">正文</BBB_Document>
</td>
</TABLE>
</body>
</html>想这样的HTML模板.其中的 <BBB_Document .....></BBB_Document>之类的是我自己定义的标签.
这样的模板可以用DOM读取吗????
"<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">"这段存在也可以用DOM来读??
MatchCollection mc = Regex.Matches(yourStr, "<b_doc\\s+id=\"(?<id>.+?)\">\\s*</b_doc>\\s*<b_tit>(?<title>.+?)</b_tit>", RegexOptions.IgnoreCase);
foreach(Match m in mc)
{
m.Groups["id"].Value;
m.Groups["title"].Value;
}
<B_Document FIELD="TITLE" >热点新闻</B_Document></td>
</B_Documents>
--------------------------------------------------------------
<B_Documents ID="热点新闻" NUMBER="20" >
代表取热点新闻的20条记录,它里面的<B_Document FIELD="TITLE" >代表取TITLE这个字段(标题)的值 .
我取出20 ,然后肯定是select top(10) TITLE from ......
象这样的模板.我取的值有: ID,NUMBER,FIELD 这样子该如何取??
using System.Text.RegularExpressions;public class MyClass
{
public static void Main()
{
string yourStr = @"<B_Documents ID=""热点新闻"" NUMBER=""20"" >
<B_Document FIELD=""TITLE"" >热点新闻</B_Document></td>
</B_Documents>";
//拼SQL语句用的模版
string templeteStr = "select top {0} {1} from {2}"; Match m = Regex.Match(yourStr, "<b_documents\\s+id=\"(?<id>.+?)\"\\s+number=\"(?<number>.+?)\"\\s+>\\s*<b_document\\s+field=\"(?<field>.+?)\"\\s+>.+?</b_document>\\s*</td>\\s*</b_documents>", RegexOptions.IgnoreCase); string id = m.Groups["id"].Value;
string number = m.Groups["number"].Value;
string field = m.Groups["field"].Value; //如果必须的三部分的长度中有一个为0
if(id.Length == 0 || number.Length == 0 || field.Length == 0)
{
Console.WriteLine("没有匹配的项。");
return;
}
string tempStr = String.Format(templeteStr, number, field, id);
Console.WriteLine(tempStr);
Console.ReadLine();
}
}
-----------------
我现在的新问题是 在<b_document id="",type="".....>这样的标签中有很多属性 id,type,name,filed.等
我读取模板的时候,如果没有指定type属性,那么就取得默认值,指定的话就取赋的值
这样就导致了一个结果.我写一号模板时候 <b_document id="国际新闻">
我写二号模板时候<b_document id="热点新闻",num=10,type=0>
也就是说同样的标签,但指定的属性不同.这样的话我在后台如何定义匹配的正则式?
从而实现 不管啥样的模板 就用同样的方法来获取<b_document>标签中的所有属性
请问如何解决?如何匹配?