繁体   English   中英

无法使该XPath正常工作

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM