-1

これは私の現在のxpathクエリです:

//node:Expr_Assign[subNode:var/node:Expr_Variable/subNode:Name/scalar:string='my_chinese_surname' and subNode:expr/node:Scalar_String/subNode:value/scalar:string='Qiu']

私はこのxmlでそれを見つけようとしています:

<?xml version="1.0" encoding="UTF-8"?>
<AST xmlns:node="http://nikic.github.com/PHPParser/XML/node" xmlns:subNode="http://nikic.github.com/PHPParser/XML/subNode" xmlns:attribute="http://nikic.github.com/PHPParser/XML/attribute" xmlns:scalar="http://nikic.github.com/PHPParser/XML/scalar">
 <scalar:array>
  <node:Expr_Assign>
   <attribute:startLine>
    <scalar:int>2</scalar:int>
   </attribute:startLine>
   <attribute:endLine>
    <scalar:int>2</scalar:int>
   </attribute:endLine>
   <subNode:var>
    <node:Expr_Variable>
     <attribute:startLine>
      <scalar:int>2</scalar:int>
     </attribute:startLine>
     <attribute:endLine>
      <scalar:int>2</scalar:int>
     </attribute:endLine>
     <subNode:name>
      <scalar:string>my_chinese_surname</scalar:string>
     </subNode:name>
    </node:Expr_Variable>
   </subNode:var>
   <subNode:expr>
    <node:Scalar_String>
     <attribute:startLine>
      <scalar:int>2</scalar:int>
     </attribute:startLine>
     <attribute:endLine>
      <scalar:int>2</scalar:int>
     </attribute:endLine>
     <subNode:value>
      <scalar:string>Qiu</scalar:string>
     </subNode:value>
    </node:Scalar_String>
   </subNode:expr>
  </node:Expr_Assign>
 </scalar:array>
</AST>

現在は機能していません。実際、scalar:arrayを選択することすらできません。

クエリの何が問題になっていますか?

名前空間だと思いました。しかし、私はそれらを登録することができません、URLは死んでいますか?http://nikic.github.com/PHPParser/XML/nodeこれはどこにもつながりません。

4

1 に答える 1

1

する必要があります:

//node:Expr_Assign[subNode:var/node:Expr_Variable/subNode:name/scalar:string='my_chinese_surname' and subNode:expr/node:Scalar_String/subNode:value/scalar:string='Qiu']

subNode:namevssubNode:Name

しかし、このような式は、XMLの残りの部分がどのように見えるかに基づいて、希望どおりに機能するかどうかはわかりませんが、もう少し読みやすくすることをお勧めします。

//node:Expr_Assign[.//scalar:string='my_chinese_surname'][ .//scalar:string='Qiu']

また、名前空間URIはURLではなく、使用するために解決可能である必要はないことに注意してください。URL形式は、名前空間URIに一般的に使用されますが、通常はドメインを所有しているため、他の人がそのドメインで名前空間URIを使用して名前空間の競合を作成しないことが合理的に確実です。名前空間URIは、同じように簡単にurn、uuid、または電子メールアドレスにすることができます。

于 2012-12-05T22:06:35.470 に答える