[英]Can't get this XPath to work
我有一些XML:
<metadata>
<dataIdInfo>
<idCitation>
<resRefDate>
<refDate>1996</refDate>
<refDateTyp>
<DateTypCd value="007" />
</refDateTyp>
</resRefDate>
<resRefDate>
<refDate>1998</refDate>
<refDateTypCd>
<DateTypCd value="003" />
</refDateTypCd>
</resRefDate>
</idCitation>
</dataIdInfo>
</metadata>
我试图从键007获得1996年的价值
XmlDocument doc = new xmlDocument();
doc.LoadXml(myXmlString);
XmlNode node = doc.SelectSingleNode("metadata/dataIdInfo/idCitation/resRefDate/refDate[refDateType/DateTypCd[@value=\"007\"]");
但是我不断收到错误消息,指出地址具有无效的令牌。 我一直在审查msdn上的XPath示例文档,但显然我在方括号部分中出错了-帮助!
谢谢罗布
两个问题。
首先,您无法关闭两组方括号,这是无效令牌。
其次,您的过滤器表达式(方括号)放在错误的位置,它们应该在refDate之前,因为它是您要过滤的resRefDate。 下面是正确的表达。
metadata/dataIdInfo/idCitation/resRefDate
[refDateTyp/DateTypCd/@value="007"]/refDate
refDateTyp不是refDate的子标记,它由查询中的条件指示。
您应该将... /resRefDate/refDate[ ...
替换为... /resRefDate[ ...
看起来您使用的是“ refDateType”(结尾处带有“ e”),而不是我在XML片段中看到的“ refDateTyp”。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.