0

次のようなxml文字列があります。

str = "<myxml><Node id="1" attr1="a" attr2="b" />
<Node id="2" attr1="a" attr2="b" /><Node id="3" attr1="a" attr2="b" />
<Node id="4" attr1="a" attr2="b" /></myxml>"

function returnNodeAsStr(str) {
...
...
}

if(returnNodeAsStr(str) == '<Node id="1" attr1="a" attr2="b" />') {
    alert("ok");
}

ノードを文字列として取得する関数の書き方 (アラートを実行させる)

4

3 に答える 3

0

あなたはこれを試すことができます:

var str = '<myxml><Node id="1" attr1="a" attr2="b" /><Node id="2" attr1="a" attr2="b" /><Node id="3" attr1="a" attr2="b" /><Node id="4" attr1="a" attr2="b" /></myxml>';​​​​​​​

var nodeArray = str.replace(/<\/?myxml>/g,'')    //removing root-> '<myxml>' tag
                .replace(/\/>\s*</g,'/>,<')      //replacing  '/><'  with '/>,<'
                .split(',');                     //spliting by comma  -------^

この後、文字列の配列が作成され、Nodeこれらの要素を文字列と比較できます。例:

if( nodeArray[0] == '<Node id="1" attr1="a" attr2="b" />'){
   //Do something
}
于 2012-07-24T09:06:38.393 に答える
0

これを試して:

var str = '<myxml><Node id="1" attr1="a" attr2="b" /><Node id="2" attr1="a" attr2="b" /><Node id="3" attr1="a" attr2="b" /><Node id="4" attr1="a" attr2="b" /></myxml>';

function returnNodeAsStr(str) {
    var xmlDoc = $.parseXML(str),
        xml = $( xmlDoc ),
        item=[],
        results=[];
    $(xml).find('Node').each(function() {
        item.push("<Node");
        $.each(this.attributes, function(i, attrib){
            item.push(attrib.name+"=\""+attrib.value+"\"");
        });
        item.push("/>");
        results.push(item.join(" "));
        item=[];
    });
    return results;
}

var result=returnNodeAsStr(str);
console.log(result);
/*
["<Node id="1" attr1="a" attr2="b" />", 
"<Node id="2" attr1="a" attr2="b" />", 
"<Node id="3" attr1="a" attr2="b" />", 
"<Node id="4" attr1="a" attr2="b" />"] 
*/

if(result[0] == '<Node id="1" attr1="a" attr2="b" />') {
    alert("ok");
}
于 2012-07-24T09:16:21.317 に答える
0

Try using regexps like this

var str='<myxml><Node id="1" attr1="a" attr2="b" /><Node id="2" attr1="a" attr2="b" /><Node id="3" attr1="a" attr2="b" /><Node id="4" attr1="a" attr2="b" /></myxml>';

var match = str.match(/<Node.*?\/>/g);

if(match.length){
   for(var i=0; i< match.length; i++)
      alert(match[i]);              
}

no additional dependencies required

P.S. you can even get individual attrs values via regexps, though it will become considerably hairier

于 2012-07-24T09:03:01.903 に答える