2016-07-06 6 views
0

私はWindows Universalアプリケーションを作成しており、HTMLコードを解析してXPathでデータを抽出する必要があります。 (Windows.Data.Xml.DomのXmlDocumentを使用しています)IXmlNodeのSelectNodesが空のXmlNodeListを返します

したがって、単一のノード(「nPostingsRoot」)を選択すると、いくつかの子ノードを持つノードが取得されています。しかし、私はこの単一のノードのルートにあるすべてのタグのリストを取得しようとしているとき、私は空のリストを持っています。 /div/div/div/div[1]/div[2]/div/table/tbody/tr[2]/td/div[2]/b[1]

誰かが私を助けることができる:私は後でこのようないくつかのXPath文字列がしているので、(スクリーンショットを参照してください)のchildNodesを反復処理する

は、オプションではありませんか?事前に

Screenshot

ありがとう!

+0

[MCVE]を投稿してください。 –

答えて

0

このスクリーンショットは、ドキュメントノードの子要素divを探すXPath /divを示しています。 HTML文書では、文書ノードの唯一の子要素はhtml要素です。コンテキストノードの子要素をdivにする場合は、子孫にdescendant::divまたは.//divを使用する場合は、単にパスdivを使用します。

0

私は@Martin Honnenに同意します。さらに、Htmlコードを解析する場合は、HtmlAgilityPack for .NetCoreを使用することをお勧めします。

XmlDocumentを使用してHtmlを解析すると、いくつかの問題が発生しました(私はhtmlコードを正常に解析するために<!DOCTYPE html>を削除またはコメントアウトする必要があります)。しかし、HtmlAgilityPackの使用中にそのような問題はありません。あなたがHtmlAgilityPackを使用して以下のコードを使用することができますルートノードの下に本部を取得するには

HtmlDocument htmlDoc = new HtmlDocument(); 
htmlDoc.LoadHtml(htmlStr); 
HtmlNode rootNode =htmlDoc.DocumentNode.SelectSingleNode("/html/body/div"); 
IEnumerable<HtmlNode> collection=rootNode.Descendants("div"); 

か、このような子のdivノードを取得するXPathを使用することができます。

HtmlDocument htmlDoc = new HtmlDocument(); 
htmlDoc.LoadHtml(htmlStr); 
HtmlNode rootNode =htmlDoc.DocumentNode.SelectSingleNode("/html/body/div"); 
HtmlNodeCollection collection = rootNode.SelectNodes("div"); 

そして、ここを私の完全ですDemo

関連する問題