2

このxmlをjQueryなどで読みやすくしたいと思います。

<?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...
    }
4

1 に答える 1

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/のデモ

于 2012-11-15T16:37:31.140 に答える