HtmlAgilityPack XPathこれは閉じられていない文字列です


質問

私はページを解析し、そのページ上の指定されたテキストボックスから内部テキストを取得する必要があります。しかし、私はこのコードをコンパイルした:

HtmlAgilityPack.HtmlDocument infoDoc = new HtmlAgilityPack.HtmlDocument();
HtmlNode.ElementsFlags["br"] = HtmlElementFlag.Closed;
infoDoc.LoadHtml(@ProblemPageSource.ToString());
HtmlNode bodyGlobal = @infoDoc.DocumentNode.SelectSingleNode(".//body").SelectSingleNode(".//div[@class='global']");
HtmlNode globalRight = @bodyGlobal.SelectSingleNode(".//div[@class='globalRight']");
HtmlNode formPanel = @globalRight.SelectSingleNode(".//form").SelectSingleNode(".//div[@class='panel]");
ProblemCode = @formPanel.SelectNodes(".//div")[0].SelectSingleNode(".//textarea").OuterHtml.ToString(); //And here is now NullRefEx :(
codeEditor.Text = @ProblemCode.ToString();

私は、 "この文字列は閉じられていません"というメッセージとともにXpathからスローされました。そして...私はGitHub Gistでホストされている解析する必要があるページのソース。 UPD:最小限のバージョン: MozDevToolsで表示されるコードの最小限のバージョン誰でも私を助けてくれる?

PS私の悪い英語のために申し訳ありません! PSS W3C Validatorでコードをチェックすると、タグを取り除くことはできませんが、多くのエラー(私の問題ではありません:))PSSSはい、CEFsharpを使用してページを表示しています。だから、もしそれがなぜHtmlの自動修正を使うのであれば、なぜこのコードは壊れていますか? :(

受け入れられた回答

あなたの".//div[@class='panel]"れている一重引用符のほかに、以下のものを呼び出す必要があります:

HtmlAgilityPack.HtmlNode.ElementsFlags.Remove("form");

form要素が重複して別々に扱われるため、 HtmlDocumentインスタンスを作成する前に、フォームを他の要素として扱うことができます。

次のようにしなければなりません:

HtmlAgilityPack.HtmlNode.ElementsFlags.Remove("form");

人気のある回答

SelectSingleNode(".//div[@class='panel]");修正してくださいSelectSingleNode(".//div[@class='panel]"); SelectSingleNode(".//div[@class='panel']");





ライセンスを受けた: CC-BY-SA
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ