首页 新闻 会员 周边

net 怎么取出页面p元素的值(包括p标签)

0
悬赏园豆:5 [已解决问题] 解决于 2011-11-02 16:05

<div>
   <p>1</p>
   <p>2</p>
   <p>3</p>
</div>
<div>
   <p>1</p>
   <p>2</p>
   <p>3</p>
</div>
<div>
   <p>1</p>
   <p>2</p>
   <p>3</p>
</div>
<div>
   <p>1</p>
   <p>2</p>
   <p>3</p>
</div>

这是我从文本里面读到的数据。。现在

我要取出每个div中第一个p元素值(包括p元素)。。。c#代码。。。不要再给我弄脚本语言

 正则表达式可以

结果如下

:  

   <p>1</p>

   <p>1</p>

   <p>1</p>

walleyekneel的主页 walleyekneel | 菜鸟二级 | 园豆:306
提问于:2011-10-10 18:21
< >
分享
最佳答案
1

给你个思路,从头遍历整个页面中的字符串,遇到div标签的时候检查<p>标签,如果是第一个的话就放到队列中,然后继续遍历,直到最后。然后从队列(queue)中取出所有的<p>标签,可以参考

http://www.cnblogs.com/q-focus/archive/2011/08/24/2152672.html

收获园豆:5
我只看看不说话 | 菜鸟二级 |园豆:291 | 2011-10-11 12:16

谁都知道这个思路是这样做。。。问题代码怎么写

walleyekneel | 园豆:306 (菜鸟二级) | 2011-10-23 20:18
其他回答(5)
0

正则表达式匹配

智华 | 园豆:205 (菜鸟二级) | 2011-10-10 19:07

等于没说

支持(0) 反对(0) walleyekneel | 园豆:306 (菜鸟二级) | 2011-10-10 19:44
1
 if (!IsPostBack)
{
string str = @"
<div><p>1</p><p>2</p><p>3</p></div>
<div><p>1</p><p>2</p><p>3</p></div>
<div><p>1</p><p>2</p><p>3</p></div>
<div><p>1</p><p>2</p><p>3</p></div>
";

string newStr = "<Test>" + str + "</Test>";//制作出一个只有一个根的xml
XmlDocument xd = new XmlDocument();
xd.LoadXml(newStr);//对xml进行解析

string outputStr = ""; //输出字符串

XmlNodeList list = xd.GetElementsByTagName("div");

foreach (XmlNode item in list)
{
outputStr += item.FirstChild.OuterXml;//得到div下面的第一个子节点的内容
}
Response.Write(Server.HtmlEncode(outputStr));//原样输出最后得到的<p>1</p><p>1</p><p>1</p>,不使用Server.HtmlEncode则输出的为1 1 1 1
}

抱歉,正则不过关。进行处理下就是个xml了,对xml进行解析就相对容易些!

wxifly | 园豆:167 (初学一级) | 2011-10-10 21:12
0

可以 加个 根节点,转成xml 来处理

XElement xe = XElement.Parse(string.Concat("<text>", str, "</text>"));
var query = xe.Descendants("div").Select(s=>s.Elements("p").FirstOrDefault());
心火 | 园豆:375 (菜鸟二级) | 2011-10-10 21:16
0

还是用正则表达式好,不容易出错,也性能高。给你写了个正则表达式:

(?<=<div>\s*)<(?<tag>[^\s>]+)[^>]*>.*?</\k<tag>>
LCM | 园豆:6876 (大侠五级) | 2011-10-11 17:13
0

支持正则表达式,html不严谨使用xml会有问题。

小小刀 | 园豆:1991 (小虾三级) | 2011-10-11 21:03
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册