我有以下xml:
<Order>
<Moulding>
<imgsrc>imgsrc</imgsrc>
<width>1.13</width>
</Moulding>
</Order>
我尝试通过以下方式获得成型宽度:
moulding_width = doc.getElementsByTagName('Moulding')[0].childNodes[1].nodeValue;
然而,这是行不通的。如何获得成型宽度?
答案 0 :(得分:0)
假设
var xml = "<Order><Moulding><imgsrc>imgsrc</imgsrc><width>1.13</width></Moulding></Order>";
关注,XML parsing of a variable string in JavaScript你可以使用(这需要jQuery)
var order = $.parseXML(xml).getElementsByTagName("Order")[0]
var moulding = order.getElementsByTagName("Moulding")[0]
var width = moulding.getElementsByTagName("width")[0];
var moulding_width = parseFloat(width.textContent);
或者,使用您的节点访问方法
var moulding_width = parseFloat($.parseXML(xml).getElementsByTagName("Order")[0].childNodes[0].childNodes[1].textContent);
请注意,getElementsByTagName
会为您提供所需元素的列表,而不是其内容,这就是为什么与您的方法相比还有额外的childNodes
。
如果你没有使用jQuery,你可能会考虑(见http://www.w3schools.com/dom/dom_parser.asp)
function parseXML(text) {
if (window.DOMParser) {
parser=new DOMParser();
return parser.parseFromString(text,"text/xml");
} else { // code for IE
xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async=false;
xmlDoc.loadXML(text);
return xmlDoc;
}
}
var moulding_width = parseFloat(parseXML(xml).getElementsByTagName("Order")[0].childNodes[0].childNodes[1].textContent);
答案 1 :(得分:0)
我认为这应该有效:
var data = "<Order><Moulding><imgsrc>imgsrc</imgsrc><width>1.13</width></Moulding></Order>";
var xml = $.parseXML(data),
$xml = $( xml ),
$test = $xml.find('width');
console.log($test.text());
我检查过这个。您也可以在此处查看:http://jsfiddle.net/5ecR6/
在您运行小提琴时检查控制台,您将找到值为1.13的日志