我想知道如何在XPath查询中使用嵌套的字符串函数。例如,我的XML如下所示。
<Invoice> <cbc:Note>Fatura Tipi:MM Alınan Mlz.İade</cbc:Note> </Invoice>
我的C#代码如下所示。
cbc:Note[contains(text(), 'Fatura Tipi:')]
当我运行此代码时,它返回“ Fatura Tipi:MMAlınanMlz.İade” ,并且部分正常。 之后,我想在定界符之后获取字符串的第二部分。表示我想得到结果“ MMAlınanMlz.İade”。所以我想我需要使用类似下面的嵌套函数。
cbc:Note[ substring-after(contains(text(), 'Fatura Tipi:'),':')]
答案 0 :(得分:2)
我想你想要
substring-after(cbc:Note[contains(., 'Fatura Tipi:')], ':')
(请注意,contains(., ...)
通常优于contains(text(), ...)
)
答案 1 :(得分:0)
我不认为这可能来自xpath中的纯c#。它通过传递谓词,该谓词将确定要返回的XML结构的哪一部分。本质上,您可以过滤到所需的内容,然后在xpath表达式之外使用 that 进行所需的操作。
一个可行的示例如下:
using System;
using System.Xml;
var xml = new XmlDocument();
xml.LoadXml("<Invoice> <Note>Fatura Tipi:MM Alınan Mlz.İade<Note> </Invoice>");
XmlText node = xml.SelectSingleNode("//Note[contains(text(), 'Fatura Tipi:']/text())");
Console.WriteLine(node.Value.Split(':')[1]);