2013-08-26 36 views
0

我有一個帶有鍵和值對的XML文檔,我想提取特定對的值。使用RegExp從xml讀取值

我想:以上

var dat1 = xmlDoc.replace(/.*<d0>([^<]*)<\/d0>.*/, "$1"); 

讓我對d0價值dat1,但後續的數據檢索,它不會返回正確的值。

所以,第一個問題是:我可以使用什麼方法通過使用regexp從XML文檔提取值(是的,我需要使用regedt)?

以上使用的替換方法是否正確?

更新: 我有以下XML字符串在未來:

<dataVal><d0>123</d0><d1>456</d1></dataVal> 

現在,內置的XML解析方法適用於我要Mozilla和Chrome,但IE瀏覽器是無法解析字符串。例如,如果我使用IE,它會變爲空:

var dat1 = xmlDoc.getElementsByTagName('d0')[0].firstChild.nodeValue 
+0

只是爲了得到你不想使用替換方法的值...它只是打破了字符串...你能提供一個示例字符串,所以我可以用它作爲例子嗎? – abc123

+0

我現在穿着我的XML獨角獸襯衫沒有笑話 – Pointy

+0

如果我的答案解決了您的問題,我建議您點擊複選框接受它。否則,請提供更多信息,爲什麼它不起作用。 – smcg

回答

3

不推薦使用正則表達式解析XML。改爲使用XML解析器。使用jQuery基本的例子(顯然需要jQuery的):建於DOM

var xml = "<music><album>Beethoven</album></music>"; 

var result = $(xml).find("album").text(); 

例使用瀏覽器:

<!DOCTYPE html> 
<html> 
    <body> 
     <script> 
      text = "<bookstore><book>"; 
      text = text + "<title>Galapagos</title>"; 
      text = text + "<author>Kurt Vonnegut</author>"; 
      text = text + "<year>1985</year>"; 
      text = text + "</book></bookstore>"; 
      var xmlDoc, bookTitle; 
      if (window.DOMParser) { 
       parser = new DOMParser(); 
       xmlDoc = parser.parseFromString(text, "text/xml"); 
      } else // Internet Explorer 
      { 
       xmlDoc = new ActiveXObject("Microsoft.XMLDOM"); 
       xmlDoc.async = false; 
       xmlDoc.loadXML(text); 
      } 
      bookTitle = xmlDoc.getElementsByTagName("title")[0].childNodes[0].data; 
      document.write(bookTitle); 
     </script> 
    </body> 
</html> 

,爲什麼使用帶有XML(和HTML)的正則表達式約束性鏈接是一個壞主意:RegEx match open tags except XHTML self-contained tags

+0

沒有問題的jQuery標記,請說明這是使用此方法的要求。 – abc123

+0

添加了非jQuery示例 – smcg

+0

+1,用於以兩種語言提供適當的方法。 – abc123