使用 Xpath 或 HtmlAgilityPack 获取字符串中的嵌套节点
Get the nested nodes in a string with Xpath or HtmlAgilityPack
在服务器上,我通过 AJAX 从客户端 JS 返回一个 HTML 片段作为字符串。内容是嵌套的 DIV,包含 ul、li 项。 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
}
}
}
- select DOM 字符串中所有内容的 Xpath 是什么,当我没有正文时,只有 Div enclosed string.
- 如何提取所有节点及其嵌套级别的内容
- 关于如何保存这个结构有什么建议吗?这样我就可以轻松恢复它了?
我不确定您现在的 Xpath 是否正确。
我也不确定第一个 ul 标签何时结束。如果它在 div 关闭之前结束。然后你就可以使用这个xpath了。
"//ul[@id='ulID']"
然后你得到第一个ul htmlnode。然后你可以遍历它的children。
我强烈建议你看一些 xpath examples.
在服务器上,我通过 AJAX 从客户端 JS 返回一个 HTML 片段作为字符串。内容是嵌套的 DIV,包含 ul、li 项。 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
}
}
}
- select DOM 字符串中所有内容的 Xpath 是什么,当我没有正文时,只有 Div enclosed string.
- 如何提取所有节点及其嵌套级别的内容
- 关于如何保存这个结构有什么建议吗?这样我就可以轻松恢复它了?
我不确定您现在的 Xpath 是否正确。 我也不确定第一个 ul 标签何时结束。如果它在 div 关闭之前结束。然后你就可以使用这个xpath了。
"//ul[@id='ulID']"
然后你得到第一个ul htmlnode。然后你可以遍历它的children。 我强烈建议你看一些 xpath examples.