以下是我的xml,我必须得到属性值:
<R a="1" b="2">
<I attribute1="" attribute2="some text"/>
<I attribute1="" attribute2="some text"/>
<I attribute1="0" attribute2="some text"/>
<I attribute1="0" attribute2="some text"/>
</R>
Run Code Online (Sandbox Code Playgroud)
在这里,我要检查是否attribute1为null然后我attribute2要从Itag 获取值.如何做到这一点??? 请帮忙...
更新:
这是一个完整的X浏览器工作脚本,可以解决这个问题.再次,用getAttribute('attribute1')任一参数替换或返回DOM并处理其余的事情.这段代码可能看起来有点复杂(它使用尽可能轻量级的闭包)但是它应该非常坚固且使用安全...只要你没有声明另一个被parseXML调用的函数而且你parseXML之前没有调用它它被宣布.
var parseXML = (function(w,undefined)
{
'use strict';
var parser,i,ie,parsed;
ie = false;
switch (true)
{
case w.DOMParser !== undefined:
parser = new w.DOMParser();
break;
case new w.ActiveXObject("Microsoft.XMLDOM") !== undefined:
parser = new w.ActiveXObject("Microsoft.XMLDOM");
parser.async = false;
ie = true;
break;
default :
throw new Error('No parser found');
}
return function(xmlString,getTags)
{
var tags,keep = [];
if (ie === true)
{
parser.loadXML(xmlString);
parsed = parser;
}
else
{
parsed = parser.parseFromString(xmlString,'text/xml');
}
tags = parsed.getElementsByTagName(getTags);
for(i=0;i<tags.length;i++)
{
if (tags[i].getAttribute('attribute1') && tags[i].getAttribute('attribute2'))
{
keep.push(tags[i].getAttribute('attribute2'));
}
}
//optional:
keep.push(parsed);//last element of array is the full DOM
return keep;
}
})(this);
var parseResult = parseXML('<r><i attribute1="" attribute2="Ignore This"/><i attribute1="foo" attribute2="got this"/></r>','i');
alert(parseResult[0] || 'nothing');//alerts 'got this' in IE and others
Run Code Online (Sandbox Code Playgroud)
您可以解析XML:
var parser = new DOMParser();
var parsed = parser.parseFromString('<r a="1" b="2"><i v="" x="some text"/><i v="0" x="some important text"/></r>','text/xml');
var iTag = parsed.getElementsByTagName('i');
for (var i=0;i<iTag.length;i++)
{
if (iTag[i].getAttribute('v'))
{
console.log(iTag[i].getAttribute('x'));//do whatever
}
}
Run Code Online (Sandbox Code Playgroud)
此代码段将记录some important text,而不是some text.这里的所有都是它的.如果您需要存储x值,或者返回它们只是声明另一个变量:
var keep = [];//an array
//change console.log line by:
keep.push(iTag[i].getAttribute('x'));
Run Code Online (Sandbox Code Playgroud)
这是假设x将设置属性,如果情况并非总是如此,则额外的检查可以轻松解决该问题.完整的代码将如下所示:
function parseXML(xml)
{
'use strict';
var parser,keep,parsed,i,iTag;
parser = new DOMParser();
keep = [];
parsed = parser.parseFromString(xml,'text/xml');//xml is the string
iTag = parsed.getElementsByTagName('i');
for (i=0;i<iTag.length;i++)
{
if (iTag[i].getAttribute('v') && iTag[i].getAttribute('x'))
{
keep.push(iTag[i].getAttribute('x'));
}
}
return keep;//return array
}
Run Code Online (Sandbox Code Playgroud)