2012-08-09 41 views
0

任何人都可以请帮忙解析Html与敏捷包到一个单一的字符串?如何通过敏捷将Html解析为C#中的字符串?

我试图解析HTML类似下面的格式,

<blockquote>\n 
    <p>Here is the first collection:<\/p>\n 
     <ol>\n 
      <li>List1<\/li>\n 
      <li>List2<\/li>\n 
      <li>List3<\/li>\n 
     <\/ol>\n 
    <p>Here is the second collection:<\/p>\n 
     <ol>\n 
      <li>List1<\/li>\n 
      <li>List2<\/li>\n 
     <\/ol>\n 
<\/blockquote> 

我尝试使用下面的方法来得到“P”和“礼”和“块引用”。 但是,方法.Descendants为“p”,“li”和“blockquote”创建单独的集合,但我需要将单个元素按顺序放置并将它们存储在单个字符串中。

IEnumerable<HtmlNode> h3Tags = document.DocumentNode.Descendants("p"); foreach (var h3tag in h3Tags) {} 

例如,我希望我的串店, “这是第一个集合:列表1列表2项目list3这里是第二个捕集列表1列表2”。

谢谢!

回答

2

使用InnerText属性blockquote节点。这应该以预期的顺序返回字符串。

这样做

var blockQuoteNode = document.DocumentNode.Descendants("blockquote").First(); // or do a document.DocumentNode.SelectSingleNode(//put the exact xpath value of the blockquote element here...) 
var stringsYouNeed = blockQuoteNode.InnerText; 
+0

对不起,我让这个问题更加清晰。如果我的blockquote包含多个“p”和“li”,该怎么办?因为.First()只返回第一个节点。谢谢! – Jerry 2012-08-10 02:45:21

+0

.First()将返回整个第一个blockquote节点对象,包括其所有子元素。这些子元素只是其他可能是p和li类型的节点。请记住,.First()方法仅用于访问文档根节点中后代节点集合中的第一个节点(在本例中为blockquote)。您可以指定哪个节点或指定特定的xpath值来选择所需的blockquote节点。此外,如果您试一试,您会注意到InnerText属性返回节点及其子节点的所有内部文本属性值。 – thinkindeveloper 2012-08-10 10:54:36

+0

好的,非常感谢! – Jerry 2012-08-10 16:43:24