Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.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
Xml 使用XPath查询进行条件检查_Xml_Xpath_Xpath 2.0 - Fatal编程技术网

Xml 使用XPath查询进行条件检查

Xml 使用XPath查询进行条件检查,xml,xpath,xpath-2.0,Xml,Xpath,Xpath 2.0,假设您有如下XML结构: <?xml version="1.0" encoding="UTF-8" ?> <ISExport Version="2.4" productVersion="2.4"> <ControlFlow name="CF_Order" typeId="2" > <Variables> <Element paramType="LOCAL" name="$V_FromTS" datatype="TIMESTAMP" &

假设您有如下XML结构:

<?xml version="1.0" encoding="UTF-8" ?>

<ISExport Version="2.4" productVersion="2.4">
<ControlFlow name="CF_Order" typeId="2" >
<Variables>
   <Element paramType="LOCAL" name="$V_FromTS" datatype="TIMESTAMP" >
   </Element>
   <Element paramType="LOCAL" name="$V_ToTS" datatype="TIMESTAMP" >
   </Element>
   <Element paramType="LOCAL" name="$V_TableName" datatype="VARCHAR"     size="128" >
   </Element>
</Variables>
</ControlFlow>
<ControlFlow name="CF_Action" typeId="2" >
<Variables>
   <Element paramType="LOCAL" name="$V_FromTS" datatype="TIMESTAMP" >
   </Element>
   <Element paramType="LOCAL" name="$V_ToTS" datatype="TIMESTAMP" >
   </Element>
   <Element paramType="LOCAL" name="$V_TableName" datatype="VARCHAR"      size="128" >
   </Element>
</Variables>
</ControlFlow>
<ControlFlow name="CF_Task" typeId="2" >
<Variables>
   <Element paramType="LOCAL" name="$V_FromTS" datatype="TIMESTAMP" >
   </Element>
   <Element paramType="LOCAL" name="$V_ToTS" datatype="TIMESTAMP" >
   </Element>
   <Element paramType="LOCAL" name="$V_TableName" datatype="VARCHAR"        size="255" >
   </Element>
</Variables>
</ControlFlow>
<ControlFlow name="CF_Sales" typeId="2" >
<Variables>
   <Element paramType="LOCAL" name="$V_FromTS" datatype="TIMESTAMP" >
  </Element>
  <Element paramType="LOCAL" name="$V_ToTS" datatype="TIMESTAMP" >
  </Element>
</Variables>
</ControlFlow>
</ISExport>

我将如何编写XPATH查询

  • 列出元素
    name=$V_TableName
    和元素
    size'128'所在的所有控制流名称
  • 列出所有没有元素
    name=$V_TableName
我正在使用Notepad++的XPATH插件。 感谢您的帮助。感谢#1的更新,以确保我们正在测试同一元素的属性-

//ControlFlow[Variables/Element[@name='$V_TableName' and not(@size = '128')]]/@name 
试试这些

1) 列出所有ControlFlow名称,其中元素名称=$V_TableName和元素大小“128”

2) 列出所有没有元素名称=$V_TableName的控制流名称

//ControlFlow[not(Variables/Element/@name='$V_TableName')]/@name

向我们展示您在输出方面所做的尝试我尝试了类似这样的操作//ControlFlow/Variables/Element[contains(@name,$V_TableName')]这列出了带有name和size属性的元素节点,这并没有真正的帮助。我不熟悉XPATH,因此觉得它有点难。
Variables/Element/@size!='128'
如果节点集中至少有一个节点的值不等于128,则返回true。您可能希望
不是(Variables/Element/@size='128')
,如果没有一个节点等于128,则为true。事实上,我认为答案(1)并没有它所说的那样,因为这两个条件对于不同的元素节点可能是正确的。答案已更新,用于检查同一元素的属性。
//ControlFlow[not(Variables/Element/@name='$V_TableName')]/@name