使用 XPath 查询进行条件检查
Condition check using XPath Query
假设你有一个像这样的 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'
所在的所有 ControlFlow 名称
- 列出所有没有元素的ControlFlow名称
name = $V_TableName
我使用的是Notepad++的XPATH插件。
任何帮助表示赞赏。谢谢
#1 的更新,以确保我们正在测试同一元素的属性 -
//ControlFlow[Variables/Element[@name='$V_TableName' and not(@size = '128')]]/@name
试试这些
1) 列出元素名称 = $V_TableName 且元素大小 <> '128'
的所有 ControlFlow 名称
//ControlFlow[Variables/Element/@name='$V_TableName' and Variables/Element/@size != '128']/@name
2) 列出所有没有元素名称的 ControlFlow 名称 = $V_TableName
//ControlFlow[not(Variables/Element/@name='$V_TableName')]/@name
假设你有一个像这样的 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'
所在的所有 ControlFlow 名称
- 列出所有没有元素的ControlFlow名称
name = $V_TableName
我使用的是Notepad++的XPATH插件。 任何帮助表示赞赏。谢谢
#1 的更新,以确保我们正在测试同一元素的属性 -
//ControlFlow[Variables/Element[@name='$V_TableName' and not(@size = '128')]]/@name
试试这些
1) 列出元素名称 = $V_TableName 且元素大小 <> '128'
的所有 ControlFlow 名称//ControlFlow[Variables/Element/@name='$V_TableName' and Variables/Element/@size != '128']/@name
2) 列出所有没有元素名称的 ControlFlow 名称 = $V_TableName
//ControlFlow[not(Variables/Element/@name='$V_TableName')]/@name