2011-09-01 72 views
1

RESTful Web服務XML響應我要解析以下XML是從RESTful Web服務的響應:解析與JavaScript

<ns2:list xmlns="urn:foo1:foo" xmlns:ns2="foo2:foo"> 

    <entityData> 
     <namedAttributes>...</namedAttributes> 
     <dynamicEnums>...</dynamicEnums> 
    </entityData> 

    <ns2:employees> 
     <ns2:user id="test"> 
      <ns2:name genderTitle="0" firstName="Rock" surName="Solid"></ns2:name> 
     </ns2:user > 
    </ns2:employees> 
</ns2:list> 

如果我嘗試的XPath表達式我只得到[對象對象]作爲警示:

function parse(xml){ 
    var test= $(this).find('/ns2:list/ns2:employees/ns2:user[85]/ns2:name'); 
    alert(test); 
}; 

添加的.text() - 方法等: 變種測試= $(本).find( '/ NS2:列表/ NS2:僱員/ NS2:用戶[85]/NS2:名稱')。文本();只使警報爲空...

xpath表達式不應該是錯誤的,我使用Firebug來獲取表達式,也許在這個例子中有一些打字錯誤。

任何人都知道什麼是錯的? 或者相反:如何警告像firstName這樣的字段?

回答

0

你可能需要看看.parseXML到這裏還解析XML是一個很好的SO回答與命名空間來解析XML jQuery XML parsing with namespaces

這裏是一個很好的鏈接過於Namespace Selectors for jQuery

解決方案

xmlDoc = $.parseXML(xml), 
    $xml = $(xmlDoc), 
    $name = $xml.find("ns2\\:name").attr("surName"); 

    alert($name); 

here id the fiddle http://jsfiddle.net/Jbnev/

+0

感謝這工作 – zyrex

+0

很高興幫助 – Rafay

+0

@ 3nigma不工作,返回undefined :( – user9371102

1

您可能需要在名稱空間中添加名稱空間。

所以,你需要這樣的東西:

/*[local-name()='list' and namespace-uri()='urn:foo1:foo'] 
+0

wha你的意思是?而不是ns2:...? – zyrex

+0

編輯...也許還搜索xpath和命名空間可能會幫助你更多。 –

1

犯規/列表/員工/用戶[@ ID = '測試'] /名/ @的firstName工作?