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 将您的代码作为可运行的代码段,这将大有帮助。