内部的Xpath标记化函数包含函数

时间:2019-04-19 11:50:56

标签: c# xpath substring

我想知道如何在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:'),':')] 

2 个答案:

答案 0 :(得分:2)

我想你想要

substring-after(cbc:Note[contains(., 'Fatura Tipi:')], ':')

(请注意,contains(., ...)通常优于contains(text(), ...)

答案 1 :(得分:0)

我不认为这可能来自中的纯。它通过传递谓词,该谓词将确定要返回的XML结构的哪一部分。本质上,您可以过滤到所需的内容,然后在表达式之外使用 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]);