2012-04-17 23 views
0

我必須分析具有​​一定的標籤的XML文檔如下:JQuery的:解析XML文檔來找到特殊字符的標籤「:」

 <result> 
      <ns0:Item> 
       <ItemID>1365</ItemID> 
       <ItemNumber>671150</ItemNumber> 
      </ns0:Item> 
      <ns0:Item> 
       <ItemID>1305</ItemID> 
       <ItemNumber>6700150</ItemNumber> 
      </ns0:Item> 
     </result> 
  1. 如果我想'找到'如果文檔包含標籤'ns0:項',下面的代碼是不能這樣做。
  2. 如果我刪除冒號':'字符,那麼它能夠成功解析xml。

代碼:

$(document).find('ns0:Item').each(function(){ 
    ....<br/> 
    ....<br/> 
    ....<br/> 
}); 

請幫助如何解析 ':' 字符的XML。
謝謝!

回答

3

冒號將命名空間前綴從元素名稱中分離出來。前綴的值在語義上不重要;重要的是命名空間字符串。在你的情況下,ns0是指你的代碼中沒有顯示的字符串;它可能指定在您的XML文檔的頂部附近。

要選擇與給定前綴的項目,假設你正在做的選擇在success回調Ajax調用的,我想你想是這樣的:

success: function(xml) { 
    var ns = "uri:whatever"; // the actual namespace, not the prefix 
    $(xml).find('Item').each(function(){ 
     if ($(this).get(0).namespaceURI == ns) { 
      .... 
     } 
    }); 
} 

您使用document作爲變量代碼中的名稱,代表一個XML文檔。這似乎令人困惑。我建議不要使用名稱document來引用瀏覽器的HTML文檔以外的任何內容。

+0

名稱空間定義存在於xml的頂部。感謝Chheso,我能夠搜索'Item'標籤而不用提及命名空間前綴'ns0'。 – fmjaguar3 2012-04-23 09:30:54

+0

也感謝您對命名約定的簡要幫助。我也收編了! – fmjaguar3 2012-04-23 09:34:51