Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Xpath标记化函数内部包含函数_C#_Xpath_Substring - Fatal编程技术网

C# Xpath标记化函数内部包含函数

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”,并

我想知道如何在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”,并且部件正常。 之后,我想得到字符串的第二部分: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'函数。@ilhan
tokenize
是在XPath2.0中引入的。MSFT的实现仍然在1.0上运行。