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 match = str.match(/<Node.*?\/>/g);

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

不需要额外的依赖项

PS您甚至可以通过正则表达式获取单个 attrs 值,尽管它会变得相当复杂

于 2012-07-24T09:03:01.903 回答
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 回答