【问题标题】:Select parent when descendant innertext equals value当后代内部文本等于值时选择父级
【发布时间】:2015-04-26 11:28:49
【问题描述】:

我正在尝试生成一个 xpath 查询,当子属性 innertext 等于某个值时,可以执行该查询以选择父节点。 XML 如下:

<order>
  <orderitem>
    <ordername>Georgina Sinclair</ordername>
    <ordernumber>408999703657</ordernumber>
    <orderpaymentmethod>cheque</orderpaymentmethod>
    <bankname>First National Bank</bankname>
    <branch>Fourways</branch>
    <amount>275.00</amount>
    <date>12/01/2012</date>
  </orderitem>
  <orderitem>
    <ordername>Zachary Whitehead</ordername>
    <ordernumber>409122372301</ordernumber>
    <orderpaymentmethod>cheque</orderpaymentmethod>
    <bankname>ABSA</bankname>
    <branch>Irene</branch>
    <amount>70.25</amount>
    <date>12/01/2012</date>
  </orderitem>
  <orderitem>
    <ordername>Toby Henderson</ordername>
    <ordernumber>401255489873</ordernumber>
    <orderpaymentmethod>cheque</orderpaymentmethod>
    <bankname>First National Bank</bankname>
    <branch>Edenvale</branch>
    <amount>181.03</amount>
    <date>12/13/2012</date>
  </orderitem>
  <orderitem>
    <ordername>Katherine Cooke</ordername>
    <ordernumber>409155874935</ordernumber>
    <orderpaymentmethod>savings</orderpaymentmethod>
    <bankname>ABSA</bankname>
    <branch>Southdowns</branch>
    <amount>975.89</amount>
    <date>01/01/2013</date>
  </orderitem>
  <orderitem>
    <ordername>Bradley James</ordername>
    <ordernumber>409254998</ordernumber>
    <orderpaymentmethod>savings</orderpaymentmethod>
    <bankname>ABSA</bankname>
    <branch>Melville</branch>
    <amount>207.74</amount>
    <date>12/09/2012</date>
  </orderitem>
  <orderitem>
    <ordername>Sophie Lane</ordername>
    <ordernumber>409771987</ordernumber>
    <orderpaymentmethod>savings</orderpaymentmethod>
    <bankname>ABSA</bankname>
    <branch>Roodepoort</branch>
    <amount>207.74</amount>
    <date>12/31/2012</date>
  </orderitem>
</order>

我想选择银行名称等于 First National Bank 的 orderitem 元素。在没有 LINQ 的 c# 中是否有 xpath 方法可以做到这一点?我正在努力获取这种类型的 xpath 查询

【问题讨论】:

标签: c# xml xpath


【解决方案1】:

我不确定您是在寻找非 LINQ C# 方法,还是寻找实际的 XPath 表达式,所以...

C#

取决于你是想使用XmlDocument还是XDocument

XPath

/order/orderitem[bankname='First National Bank']

【讨论】:

  • 谢谢!一直坐在 xpathtester 中尝试各种奇怪的事情来得到这个!
  • 请去掉./,其实表达式中是多余的。此外,/order/orderitem[bankname='First National Bank'] 通常是首选,因为它避开了// 轴。
  • @MathiasMüller 好点,谢谢。我本来想改//,但忘了。
猜你喜欢
  • 1970-01-01
  • 2015-01-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-10
相关资源
最近更新 更多