这是我当前的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>
目前无法使用。事实上,我甚至无法选择标量:数组。
查询有什么问题?
我认为这是名称空间。但我不能注册,网址已经死了? http://nikic.github.com/PHPParser/XML/node这不会导致任何问题。
答案 0 :(得分: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:name
vs subNode:Name
但是我可以建议像这样的表达式可能更具可读性,尽管我无法根据XML的其余部分来判断它是否会按照您想要的方式工作
//node:Expr_Assign[.//scalar:string='my_chinese_surname'][ .//scalar:string='Qiu']
另请注意,名称空间URI不是URL,不需要解析它们就可以使用。 URL格式通常用于名称空间URI,因为通常拥有该域,因此可以合理地确定其他人不会通过在该域中使用名称空间URI来创建名称空间冲突。命名空间URI可以很容易地成为urn,uuid或电子邮件地址。