Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/265.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#_Xml_Xpath - Fatal编程技术网

C# 使用带有节点属性的XPath

C# 使用带有节点属性的XPath,c#,xml,xpath,C#,Xml,Xpath,我已经掌握了XPath的基本知识,但在确定使用XPath在C#代码中是否可以实现以下功能时遇到了一些困难(或者我是否需要将其转移到其他代码中,就像我目前所做的那样) 我有一个XML文档,它由以下结构组成: <xml> <parameters> <setParameter name="SomeName" value="SomeValue" /> </parameters> </xml> 其中有

我已经掌握了XPath的基本知识,但在确定使用XPath在C#代码中是否可以实现以下功能时遇到了一些困难(或者我是否需要将其转移到其他代码中,就像我目前所做的那样)

我有一个XML文档,它由以下结构组成:

 <xml>
     <parameters>
        <setParameter name="SomeName" value="SomeValue" />
     </parameters>
 </xml>

其中有多个设置参数值。现在我只需要检索那些包含name属性特定值的setParameter节点。我可能有这些值的可能匹配列表,但它们不是完全匹配,而是节点的name属性必须包含的值

例如,在上面的结构代码中,如果我要匹配一个值'men',它将与节点一起返回,因为'SomeName'中包含'men'


该操作的简写方法是什么?

为所有名为
setParameter
的元素检索名为
value
的所有属性的值,这些元素的
名称
属性值包含

//setParameter[contains(@name, 'men')]/@value
  • //设置参数
检索名为
setParameter
的所有节点(可替换为
/xml/parameters/setParameter

  • [……]
检查当前节点选择的属性

  • 包含(@name,'men')
如果
name
属性的值包含
men

  • /@价值观

检索
属性的值。

我认为没有办法将属性与通配符匹配,但您可以使用
包含
方法,例如:

//parameters/setParameter[contains(@name, "stringexample")]

根据您的
XPath
版本,这可能有效,也可能无效:

//setParameter[matches(@name,"men", "i") or matches(@name,"else", "i")]
这应该将
名称
属性相匹配,该属性包含
“男性”
或某个
“其他”
。它不区分大小写


请尝试让我知道结果

您有xpath示例吗?非常简单:“parameters/setParameter”这是不区分大小写的吗?@Polyfun否,它区分大小写。有关不区分大小写的信息,请参阅。OP需要一个不区分大小写的匹配。@Polyfun我一定很困,但我看不到这个要求。