2016-10-05 355 views
0

给出docuent A.XML:为什么这个xpath不起作用?

<?xml version="1.0"?> 
<xml> 
    <listUsersResponse xmlns="http://www.algorithmics.com/schema"> 
    <status>OK</status> 
    <users size="615"> 
     <user> 
     <id>user1</id> 
     <name>Joe Doe</name> 
     <attributes size="0"/> 
     <status>ACTIVE</status> 
     <roleId>CREDIT_SUPPORT</roleId> 
     <password>454E454A77484D3566717547686858726842503755513D3D</password> 
     <timeout>0</timeout> 
     </user> 
     <user> 
     <id>user2</id> 
     <name>Tom Smith</name> 
     <attributes size="0"/> 
     <status>ACTIVE</status> 
     <roleId>RISK_MANAGEMENT</roleId> 
     <password>627678416458513567624E37384C314E626C30672B773D3D</password> 
     <timeout>0</timeout> 
     </user> 
    </users> 
    </listUsersResponse> 
</xml> 

我想提取具有id元素具有值 “USER1的” <user>节点的XML。

@skovorodkin:谢谢你的提示。现在我得到节点。但它不会显示该节点的全部内容:

$ xmllint --shell a.xml <<EOF 
...setns x=http://www.algorithmics.com/schema 
...xpath //x:users/x:user[x:id="user1"] 
...EOF 
/>/> Object is a Node Set : 
Set contains 1 nodes: 
1 ELEMENT user 

我想到:

<user> 
     <id>user1</id> 
     <name>Joe Doe</name> 
     <attributes size="0"/> 
     <status>ACTIVE</status> 
     <roleId>CREDIT_SUPPORT</roleId> 
     <password>454E454A77484D3566717547686858726842503755513D3D</password> 
     <timeout>0</timeout> 
</user> 
+1

您的XML有一个名称空间,所以您必须调整您的查询。看看这个答案例如:http://stackoverflow.com/a/8266075/847552 – skovorodkin

+0

谢谢。我更新了我的帖子。是否可以显示结果的全部内容? – AlexL

+1

如果有帮助,不要忘记在其他问题上回答问题。 ;-) –

回答

1

中的XPath工作正常,并选择您正在寻找的元素。您遇到显示找到XPath表达式的节点的问题。这将取决于您用于处理XPath结果的应用程序或工具,而不是XPath本身。