我正在尝试从XML文件中解析出一个简单的字符串列表。我只想检索没有指定属性的值。

例如,在以下XML代码段中:

<meaning>sultry</meaning>
<meaning>hot</meaning>
<meaning>summer heat</meaning>
<meaning m_lang="fr">chaud</meaning>
<meaning m_lang="fr">torride</meaning>
...


调用SelectNodes("//meaning")将返回闷热,炎热,夏季炎热,Chaud,Torride。但是,我只想检索标记为<meaning>而不是<meaning m_lang="fr>的值,即我只想闷热,炎热,夏天热。

是否有一种简单的方法可以只检索非属性值?它们将始终是列表中的第一个,但是可能有一个或多个值。

最佳答案

是的,您需要使您的XPath Expression(传递给SelectNodes()的字符串)更具体。在这种情况下,您要查找没有任何其他属性的节点,因此您可以像这样修改XPath表达式:

SelectNodes("//meaning[not(@*)]")


要分解以上内容:


“含义”选择所有“含义”元素,
“ @ *”选择具有至少一个属性的所有元素,
“不”否定规则


因此,这在一起意味着“选择没有至少一个属性的所有'含义'元素”。

有关更多参考,请查看此nifty xpath cheatsheet

07-24 09:35