C# Xpath标记化函数内部包含函数
我想知道如何在XPath查询中使用嵌套字符串函数。例如,我的XML如下所示C# Xpath标记化函数内部包含函数,c#,xpath,substring,C#,Xpath,Substring,我想知道如何在XPath查询中使用嵌套字符串函数。例如,我的XML如下所示 <Invoice> <cbc:Note>Fatura Tipi:MM Alınan Mlz.İade</cbc:Note> </Invoice> cbc:Note[ substring-after(contains(text(), 'Fatura Tipi:'),':')] 当我运行这段代码时,它返回“Fatura Tipi:MM Alınan Mlz.İade”,并
<Invoice> <cbc:Note>Fatura Tipi:MM Alınan Mlz.İade</cbc:Note> </Invoice>
cbc:Note[ substring-after(contains(text(), 'Fatura Tipi:'),':')]
当我运行这段代码时,它返回“Fatura Tipi:MM Alınan Mlz.İade”,并且部件正常。
之后,我想得到字符串的第二部分:delimiter。这意味着我希望得到“MM Alınan Mlz.İade”作为结果。所以我想我需要使用嵌套函数,如下所示
<Invoice> <cbc:Note>Fatura Tipi:MM Alınan Mlz.İade</cbc:Note> </Invoice>
cbc:Note[ substring-after(contains(text(), 'Fatura Tipi:'),':')]
我不相信这是完全可能的。它的存在是为了传递一个谓词,该谓词将确定要返回的XML结构的哪一部分。本质上,你过滤到你想要的,然后在表达之外做你想要的 因此,一个有效的示例如下:
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]);
使用系统;
使用System.Xml;
var xml=新的XmlDocument();
LoadXml(“faturatipi:MM Alınan Mlz.ade”);
XmlText node=xml.SelectSingleNode(//Note[contains(text(),'Fatura Tipi:']/text())”;
Console.WriteLine(node.Value.Split(“:”)[1]);
我想你想要
substring-after(cbc:Note[contains(., 'Fatura Tipi:')], ':')
(注意,
contains(,…)
通常比contains(text(),…)
)更可取。您能给您演示一下代码吗?实际上有两个xpath函数。在('aa-bb','-')之前的子字符串和标记(“1,15,24,50,,”))但是我不知道如何组合这些函数中的一个width'contains'函数。@ilhantokenize
是在XPath2.0中引入的。MSFT的实现仍然在1.0上运行。