JavaScript 中的 DOMParser 没有给出 XML 元素
DOMParser in JavaScript doesn't give the XML elements
我有这个XML:
<Walls> <!-- Added by edit -->
<Wall Height="1.0">
<Corner X="15" Y="9"/>
<Corner X="23.5" Y="9"/>
<Corner X="23.5" Y="8.5"/>
<Corner X="15" Y="8.5"/>
</Wall>
<Wall Height="3.0">
<Corner X="14" Y="5.5"/>
<Corner X="24" Y="5.5"/>
<Corner X="24" Y="5"/>
<Corner X="14" Y="5"/>
</Wall>
</Walls> <!-- Added by edit -->
我在 JavaScript 中为此做了一个解析器:
if (window.DOMParser){
var parser = new DOMParser();
var doc = parser.parseFromString(stringContainingXMLSource, "application/xml");
var xmlDoc = parser.parseFromString(txt, "application/xml");
}
document.getElementById("Wall").innerHTML= xmlDoc.getElementsByTagName("Wall")[0].childNodes[1].nodeValue;
现在我想获取XML的所有数据,但是用这种方法获取不到。
我做错了什么?
您认为空元素节点的 nodeValue 是什么? nodeValue 属性 用于 For text, comment and CDATA nodes, perhaps you want to read the attribute values?
要读取属性值,请使用 getAttribute,例如
var xml = '<Wall Height="1.0">' +
'<Corner X="15" Y="9"/>' +
'<Corner X="23.5" Y="9"/>' +
'<Corner X="23.5" Y="8.5"/>' +
'<Corner X="15" Y="8.5"/>' +
'</Wall>';
if (window.DOMParser){
var parser = new DOMParser();
var xmlDoc = parser.parseFromString(xml, "application/xml");
}
if (xmlDoc) {
var nodes = xmlDoc.querySelectorAll('Corner');
var wall = document.querySelector('#Wall');
var html = Array.from(nodes).map((node, i) =>
`${node.tagName} ${i}: X=${node.getAttribute('X')}, Y=${node.getAttribute('Y')}`
);
wall.innerHTML = html.join('<br>');
}
<div id="Wall"></div>
PS。如果您 post 将您的代码作为可运行的代码段,这将大有帮助。
我有这个XML:
<Walls> <!-- Added by edit -->
<Wall Height="1.0">
<Corner X="15" Y="9"/>
<Corner X="23.5" Y="9"/>
<Corner X="23.5" Y="8.5"/>
<Corner X="15" Y="8.5"/>
</Wall>
<Wall Height="3.0">
<Corner X="14" Y="5.5"/>
<Corner X="24" Y="5.5"/>
<Corner X="24" Y="5"/>
<Corner X="14" Y="5"/>
</Wall>
</Walls> <!-- Added by edit -->
我在 JavaScript 中为此做了一个解析器:
if (window.DOMParser){
var parser = new DOMParser();
var doc = parser.parseFromString(stringContainingXMLSource, "application/xml");
var xmlDoc = parser.parseFromString(txt, "application/xml");
}
document.getElementById("Wall").innerHTML= xmlDoc.getElementsByTagName("Wall")[0].childNodes[1].nodeValue;
现在我想获取XML的所有数据,但是用这种方法获取不到。
我做错了什么?
您认为空元素节点的 nodeValue 是什么? nodeValue 属性 用于 For text, comment and CDATA nodes, perhaps you want to read the attribute values?
要读取属性值,请使用 getAttribute,例如
var xml = '<Wall Height="1.0">' +
'<Corner X="15" Y="9"/>' +
'<Corner X="23.5" Y="9"/>' +
'<Corner X="23.5" Y="8.5"/>' +
'<Corner X="15" Y="8.5"/>' +
'</Wall>';
if (window.DOMParser){
var parser = new DOMParser();
var xmlDoc = parser.parseFromString(xml, "application/xml");
}
if (xmlDoc) {
var nodes = xmlDoc.querySelectorAll('Corner');
var wall = document.querySelector('#Wall');
var html = Array.from(nodes).map((node, i) =>
`${node.tagName} ${i}: X=${node.getAttribute('X')}, Y=${node.getAttribute('Y')}`
);
wall.innerHTML = html.join('<br>');
}
<div id="Wall"></div>
PS。如果您 post 将您的代码作为可运行的代码段,这将大有帮助。