2012-08-09 39 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