Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.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 - Fatal编程技术网

Xml 一个过时导入的Xpath查询

Xml 一个过时导入的Xpath查询,xml,xpath,Xml,Xpath,我正试图从xml创建一个xpath查询,当@token=V73或@token=V72或@token=V71或@token=V70时会发生冲突 xml: <compilationUnit tokenValue="package" tokenLine="1" tokenColumn="0"> <packageDeclaration tokenValue="package" tokenLine="1" tokenColumn="0"> <PACKAGE tokenVal

我正试图从xml创建一个xpath查询,当@token=V73或@token=V72或@token=V71或@token=V70时会发生冲突

xml:

<compilationUnit tokenValue="package" tokenLine="1" tokenColumn="0">
 <packageDeclaration tokenValue="package" tokenLine="1" tokenColumn="0">
<PACKAGE tokenValue="package" tokenLine="1" tokenColumn="0">
  <TOKEN tokenValue="package" tokenLine="1" tokenColumn="0"/>
</PACKAGE>
<qualifiedIdentifier tokenValue="revueCode" tokenLine="1" tokenColumn="8">
  <IDENTIFIER tokenValue="revueCode" tokenLine="1" tokenColumn="8">
    <TOKEN tokenValue="revueCode" tokenLine="1" tokenColumn="8"/>
  </IDENTIFIER>
</qualifiedIdentifier>
<SEMI tokenValue=";" tokenLine="1" tokenColumn="17">
  <TOKEN tokenValue=";" tokenLine="1" tokenColumn="17"/>
</SEMI>
</packageDeclaration>
<importDeclaration tokenValue="import" tokenLine="3" tokenColumn="0">
<IMPORT tokenValue="import" tokenLine="3" tokenColumn="0">
  <TOKEN tokenValue="import" tokenLine="3" tokenColumn="0"/>
</IMPORT>
<qualifiedIdentifier tokenValue="com" tokenLine="3" tokenColumn="7">
  <IDENTIFIER tokenValue="com" tokenLine="3" tokenColumn="7">
    <TOKEN tokenValue="com" tokenLine="3" tokenColumn="7"/>
  </IDENTIFIER>
  <DOT tokenValue="." tokenLine="3" tokenColumn="10">
    <TOKEN tokenValue="." tokenLine="3" tokenColumn="10"/>
  </DOT>
  <IDENTIFIER tokenValue="orca" tokenLine="3" tokenColumn="11">
    <TOKEN tokenValue="orca" tokenLine="3" tokenColumn="11"/>
  </IDENTIFIER>
  <DOT tokenValue="." tokenLine="3" tokenColumn="15">
    <TOKEN tokenValue="." tokenLine="3" tokenColumn="15"/>
  </DOT>
  <IDENTIFIER tokenValue="rightv" tokenLine="3" tokenColumn="16">
    <TOKEN tokenValue="rightv" tokenLine="3" tokenColumn="16"/>
  </IDENTIFIER>
  <DOT tokenValue="." tokenLine="3" tokenColumn="22">
    <TOKEN tokenValue="." tokenLine="3" tokenColumn="22"/>
  </DOT>
  <IDENTIFIER tokenValue="interfaces" tokenLine="3" tokenColumn="23">
    <TOKEN tokenValue="interfaces" tokenLine="3" tokenColumn="23"/>
  </IDENTIFIER>
  <DOT tokenValue="." tokenLine="3" tokenColumn="33">
    <TOKEN tokenValue="." tokenLine="3" tokenColumn="33"/>
  </DOT>
  <IDENTIFIER tokenValue="v73" tokenLine="3" tokenColumn="34">
    <TOKEN tokenValue="v73" tokenLine="3" tokenColumn="34"/>
  </IDENTIFIER>
  <DOT tokenValue="." tokenLine="3" tokenColumn="37">
    <TOKEN tokenValue="." tokenLine="3" tokenColumn="37"/>
  </DOT>
  <IDENTIFIER tokenValue="catalog" tokenLine="3" tokenColumn="38">
    <TOKEN tokenValue="catalog" tokenLine="3" tokenColumn="38"/>
  </IDENTIFIER>
  <DOT tokenValue="." tokenLine="3" tokenColumn="45">
    <TOKEN tokenValue="." tokenLine="3" tokenColumn="45"/>
  </DOT>
  <IDENTIFIER tokenValue="core" tokenLine="3" tokenColumn="46">
    <TOKEN tokenValue="core" tokenLine="3" tokenColumn="46"/>
  </IDENTIFIER>
  <DOT tokenValue="." tokenLine="3" tokenColumn="50">
    <TOKEN tokenValue="." tokenLine="3" tokenColumn="50"/>
  </DOT>
  <IDENTIFIER tokenValue="entities" tokenLine="3" tokenColumn="51">
    <TOKEN tokenValue="entities" tokenLine="3" tokenColumn="51"/>
  </IDENTIFIER>
  <DOT tokenValue="." tokenLine="3" tokenColumn="59">
    <TOKEN tokenValue="." tokenLine="3" tokenColumn="59"/>
  </DOT>
  <IDENTIFIER tokenValue="xsd" tokenLine="3" tokenColumn="60">
    <TOKEN tokenValue="xsd" tokenLine="3" tokenColumn="60"/>
  </IDENTIFIER>
  <DOT tokenValue="." tokenLine="3" tokenColumn="63">
    <TOKEN tokenValue="." tokenLine="3" tokenColumn="63"/>
  </DOT>
  <IDENTIFIER tokenValue="IPageIdentifier" tokenLine="3" tokenColumn="64">
    <TOKEN tokenValue="IPageIdentifier" tokenLine="3" tokenColumn="64"/>
  </IDENTIFIER>
</qualifiedIdentifier>
<SEMI tokenValue=";" tokenLine="3" tokenColumn="79">
  <TOKEN tokenValue=";" tokenLine="3" tokenColumn="79"/>
</SEMI>
</importDeclaration>
  <typeDeclaration tokenValue="public" tokenLine="8" tokenColumn="0">
<modifier tokenValue="public" tokenLine="8" tokenColumn="0">
  <PUBLIC tokenValue="public" tokenLine="8" tokenColumn="0">
    <TOKEN tokenValue="public" tokenLine="8" tokenColumn="0"/>
  </PUBLIC>
</modifier>
<classDeclaration tokenValue="class" tokenLine="8" tokenColumn="7">
  <CLASS tokenValue="class" tokenLine="8" tokenColumn="7">
    <TOKEN tokenValue="class" tokenLine="8" tokenColumn="7"/>
  </CLASS>
  <IDENTIFIER tokenValue="ViolationRule" tokenLine="8" tokenColumn="13">
    <TOKEN tokenValue="ViolationRule" tokenLine="8" tokenColumn="13"/>
  </IDENTIFIER>
  <classBody tokenValue="{" tokenLine="8" tokenColumn="27">
    <LWING tokenValue="{" tokenLine="8" tokenColumn="27">
      <TOKEN tokenValue="{" tokenLine="8" tokenColumn="27"/>
    </LWING>
    <classBodyDeclaration tokenValue="public" tokenLine="10" tokenColumn="1">
      <modifier tokenValue="public" tokenLine="10" tokenColumn="1">
        <PUBLIC tokenValue="public" tokenLine="10" tokenColumn="1">
          <TOKEN tokenValue="public" tokenLine="10" tokenColumn="1"/>
        </PUBLIC>
      </modifier>
      <modifier tokenValue="static" tokenLine="10" tokenColumn="8">
        <STATIC tokenValue="static" tokenLine="10" tokenColumn="8">
          <TOKEN tokenValue="static" tokenLine="10" tokenColumn="8"/>
        </STATIC>
      </modifier>
      <memberDecl tokenValue="void" tokenLine="10" tokenColumn="15">
        <VOID tokenValue="void" tokenLine="10" tokenColumn="15">
          <TOKEN tokenValue="void" tokenLine="10" tokenColumn="15"/>
        </VOID>
        <IDENTIFIER tokenValue="main" tokenLine="10" tokenColumn="20">
          <TOKEN tokenValue="main" tokenLine="10" tokenColumn="20"/>
        </IDENTIFIER>
        <voidMethodDeclaratorRest tokenValue="(" tokenLine="10" tokenColumn="24">
          <formalParameters tokenValue="(" tokenLine="10" tokenColumn="24">
            <LPAR tokenValue="(" tokenLine="10" tokenColumn="24">
              <TOKEN tokenValue="(" tokenLine="10" tokenColumn="24"/>
            </LPAR>
            <formalParameterDecls tokenValue="final" tokenLine="10" tokenColumn="25">
              <FINAL tokenValue="final" tokenLine="10" tokenColumn="25">
                <TOKEN tokenValue="final" tokenLine="10" tokenColumn="25"/>
              </FINAL>
              <type tokenValue="String" tokenLine="10" tokenColumn="31">
                <classType tokenValue="String" tokenLine="10" tokenColumn="31">
                  <IDENTIFIER tokenValue="String" tokenLine="10" tokenColumn="31">
                    <TOKEN tokenValue="String" tokenLine="10" tokenColumn="31"/>
                  </IDENTIFIER>
                </classType>
                <dim tokenValue="[" tokenLine="10" tokenColumn="37">
                  <LBRK tokenValue="[" tokenLine="10" tokenColumn="37">
                    <TOKEN tokenValue="[" tokenLine="10" tokenColumn="37"/>
                  </LBRK>
                  <RBRK tokenValue="]" tokenLine="10" tokenColumn="38">
                    <TOKEN tokenValue="]" tokenLine="10" tokenColumn="38"/>
                  </RBRK>
                </dim>
              </type>
              <formalParametersDeclsRest tokenValue="args" tokenLine="10" tokenColumn="40">
                <variableDeclaratorId tokenValue="args" tokenLine="10" tokenColumn="40">
                  <IDENTIFIER tokenValue="args" tokenLine="10" tokenColumn="40">
                    <TOKEN tokenValue="args" tokenLine="10" tokenColumn="40"/>
                  </IDENTIFIER>
                </variableDeclaratorId>
              </formalParametersDeclsRest>
            </formalParameterDecls>
            <RPAR tokenValue=")" tokenLine="10" tokenColumn="44">
              <TOKEN tokenValue=")" tokenLine="10" tokenColumn="44"/>
            </RPAR>
          </formalParameters>
          <methodBody tokenValue="{" tokenLine="10" tokenColumn="46">
            <block tokenValue="{" tokenLine="10" tokenColumn="46">
              <LWING tokenValue="{" tokenLine="10" tokenColumn="46">
                <TOKEN tokenValue="{" tokenLine="10" tokenColumn="46"/>
              </LWING>
              <blockStatements/>
              <RWING tokenValue="}" tokenLine="12" tokenColumn="1">
                <TOKEN tokenValue="}" tokenLine="12" tokenColumn="1"/>
              </RWING>
            </block>
          </methodBody>
        </voidMethodDeclaratorRest>
      </memberDecl>
    </classBodyDeclaration>
    <RWING tokenValue="}" tokenLine="14" tokenColumn="0">
      <TOKEN tokenValue="}" tokenLine="14" tokenColumn="0"/>
    </RWING>
  </classBody>
</classDeclaration>
 </typeDeclaration>
  <EOF tokenValue="" tokenLine="14" tokenColumn="1"/>
</compilationUnit>

我在下面生成了这个查询,我需要知道它是否正确,如果不正确,有人能帮我找到正确的吗 XPATH查询:
//导入声明//限定标识符//标识符/令牌[@tokenValue='v73'或@tokenValue='v72'或@tokenValue='v71'或@tokenValue='v70']

提前感谢您的帮助

我在下面生成了查询,我需要知道它是否正确

你可以亲自去看看。如您所见,结果是
。如果这是预期的结果,那么它是有效的

//expr
的意思是:从当前节点开始,向下遍历所有子节点并找到匹配的节点
expr
。你一遍又一遍地重复这个,但这并没有增加多少价值

相反,你可以写

//IDENTIFIER/TOKEN[@tokenValue='v73' or @tokenValue='v72' or @tokenValue='v71' or @tokenValue='v70']` 
要使用
标识符的父项在任意深度搜索令牌,或者,如果您希望父项在那里,可以执行以下操作,这将更加有效:

//IDENTIFIER/TOKEN[@tokenValue='v73' or @tokenValue='v72' or @tokenValue='v71' or @tokenValue='v70'][ancestor::qualifiedIdentifier[ancestor::importDeclaration]]
注意,在XPath2.0和3.0中,您可以编写如下更简单、更简洁的代码,但当然,它需要XPath2.0或3.0处理器

//IDENTIFIER/TOKEN[@tokenValue=('v73', 'v72', 'v71','v70')]

非常感谢您快速有效的回复
//IDENTIFIER/TOKEN[@tokenValue=('v73', 'v72', 'v71','v70')]