在服务器上,我通过AJAX从客户端JS获取一个HTML片段作为字符串。内容是带有ul,li项的嵌套DIV。 HTML DIv snippet
<div> //please see link above
<ul class="tree" id="ulID" name="input">
<li><span class="vertical..."></span>
<div></span>1</div>
<ul>..
</div>
我正在使用C#HtmlAgilityPack,但我无法获取嵌套内容来提取数据,并重新添加数据。
以下是一些代码。
HtmlAgilityPack.HtmlDocument htmlDoc = new HtmlAgilityPack.HtmlDocument();
// nested
htmlDoc.OptionFixNestedTags=true;
bool failed = false;
// Use: htmlDoc.LoadHtml(htmlString);
// ParseErrors is an ArrayList
if (htmlDoc.ParseErrors != null && htmlDoc.ParseErrors.Count() > 0)
{
// Handle any parse errors as required
// check if string was JSON formatted
if (htmlDoc.LoadHtml(JSONdeserialize(htmlString)).ParseErrors.Count() > 0) failed = true;
}
else
{
if (htmlDoc.DocumentNode != null)
{
HtmlAgilityPack.HtmlNode bodyNode = htmlDoc.DocumentNode.SelectSingleNode("//ulID");
if (bodyNode != null)
{
// **how can I get the contents of the node here??****
// what is the xpath to get all the structured contents so I can walk the tree
// If option walk tree
// How can I build foreach(HTMLnode node in nodes) nested array
}
}
}
答案 0 :(得分:1)
我不确定你现在拥有的Xpath是否正确。 我也不确定第一个ul标签何时结束。如果它在div关闭之前结束。然后你可以使用这个xpath。
"//ul[@id='ulID']"
然后你得到第一个ul htmlnode。然后你可以遍历它的孩子。 我强烈建议您查看一些xpath examples。