我正在尝试从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。