如何使用html agility pack和xpath获取所有子节点

时间:2014-04-04 13:40:57

标签: xml xpath html-agility-pack

我有一个XML文档,我试图使用XPath解析HTML Agility Pack。这是获取元素的代码:

HtmlDocument htmldoc = new HtmlDocument();
htmldoc.Load(fileName);
HtmlNodeCollection nodes = htmldoc.DocumentNode.SelectNodes("feed/l");

这是我的XML文档

<?xml version="1.0" encoding="UTF-8"?>
<feed>
<tm>5701</tm>
<tp>1141</tp>
<pnr>1</pnr>
<l type="TEXT">
<ca>
<c id="21">JA</c>
</ca>
<pts>
<pt id="5">DO</pt>
</pts>
<od>MA 99</od>
<osd>2014-02-21</osd>
<od>2014-02-22</od>
<cu>url</cu>
<ip>ip</ip>
<ai>3184</ai>
<an>com</an>
<n id="1">US n</n>
</l>
</feed>

我正在尝试获取l子节点及其子节点的所有节点,但我的XPath返回带有l的节点作为集合,但子节点为空。我要查找的l分组的节点是这些

 <ca>
<c id="21">JA</c>
</ca>
<pts>
<pt id="5">DO</pt>
</pts>
<od>MA 99</od>
<osd>2014-02-21</osd>
<od>2014-02-22</od>
<cu>url</cu>
<ip>ip</ip>
<ai>3184</ai>
<an>com</an>
<n id="1">US n</n>

但没有孩子。请帮助我的XPath似乎是正确的。

1 个答案:

答案 0 :(得分:0)

你的XPath应该是

feed/l/*

因为你想要l的儿童元素。所以在你的代码中它应该是

HtmlNodeCollection nodes = htmldoc.DocumentNode.SelectNodes("feed/l/*");