2012-11-15 167 views
2

我想阅读这个XML与jQuery或其他更容易。阅读与jQuery XML

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE Film SYSTEM "film_commentaries_opinion.dtd"> 

<Film lang="fr" title="Mixed" originalTitle=""> 
<Actors> 
</Actors> 
<Comments> 
    <Comment>films adapted from comic <Tag length="5" />books have had plenty 
    of success, whether they're about superheroes (batman, superman, spawn), 
    or geared toward kids (casper) or the arthouse crowd (ghost world), but 
    there's never really been a comic <Tag length="4" />book like from 
    hell before. For starters, it was created by Alan Moore 
    (and Eddie Campbell), who brought the medium to a whole new level in the 
    mid '80s with a 12-part series called the watchmen.</Comment> 
</Comments> 
</Film> 

当然我不能改变我的皇帝丰富的客户端提供的XML,当然我想要找回这个词“”和单词“”。 <Tag />给我一个“长度”,它表示我需要选择的以下单词的长度。

我该怎么做?

现在我用:

$.ajax({ 
    type: 'GET', url: 'data/mergedXML_PangLee.xml.tag.xml', dataType: 'xml', 
    success: function(xml) { 
     var tags = $(xml).find("Tag"); 
     // other code here... 
    } 
+1

请告诉我问题吗? – ManseUK

+1

您错过了提问的部分 –

+0

我想检索单词“books”和单词“book”。我怎样才能做到这一点? – enguerran

回答

1

jQuery的方式

success: function(xml) { 

    var liveXml = $(xml), 
     inTagMode = false, 
     tagLength, 
     tags = []; 

    liveXml.find('Comment').contents().each(function(){ 
     var node = $(this), 
      value = node.text(); 

     if (inTagMode){ 
      tags.push(value.substring(0,tagLength)); 
      inTagMode = false; 
     } else { 
      if (this.nodeName.toLowerCase() === 'tag'){ 
       inTagMode = true; 
       tagLength = node.attr('length'); 
      } 
     } 
    }); 

} 

演示在http://jsfiddle.net/gaby/wtykx/


正则表达式的方式(假设标签是全字

success: function(xml) { 
    var regex = /(?:<tag.*?\/>)(..*?\b)/gi; 
    var tags = [], result; 
    while(result = regex.exec(xml)){ 
     tags.push(result[1]); 
    } 
} 

演示在http://jsfiddle.net/gaby/wtykx/1/

+0

这是一个伟大的和干净的代码!我将像现在一样使用jQuery方式,标签是表达式(很多词),但是,谢谢,它太棒了! – enguerran