从XML中提取精确的值

本文关键字:提取 XML | 更新日期: 2023-09-27 18:25:28

我正试图从一些XML中获取XML值,这是我的XML

<SearchResult>
  <Entity id="192418" defaultrole="TEMP_JOB_R">
    <Property name="JOB_GEN">
      <Attribute name="REFERENCE">192418</Attribute> 
    </Property>
  </Entity>
</SearchResult>

我试过这个

var reference = (
  from el in result.XPathSelectElements("Entity")
  select el.Attributes("REFERENCE").Select(x => x.Value).SafeParse<long>().FirstOrDefault()
);

但是引用总是等于0如何选择引用属性并仅收回其值?

从XML中提取精确的值

如果您对使用XPath表达式的解决方案感兴趣,以下XPath将选择name属性等于REFERENCE:的<Attribute>元素

var reference = (from el in result.XPathSelectElements("//Entity/Property/Attribute[@name='REFERENCE']")
                 select (long)el
                 );

或者,如果你只期望一个结果:

var reference = (long)result.XPathSelectElement("//Entity/Property/Attribute[@name='REFERENCE']");

旁注:您可以将XElement强制转换为long,如上所示。