2016-10-05 292 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本身。