我有一个带有 JavaScript 的 HTML5 文件,可以读取本地 XML 文件。
XML 结构中的一个元素是动态的,包含内部 xml,没有值。
当尝试在网页上显示此节点名称时,我看到的只是#text
。
XML 示例:
<Students>
<student id="1">
<Connor>
<age>20</age>
<gender>male</gender>
</Connor>
</student>
<student id="2">
<Fiona>
<age>25</age>
<gender>female</gender>
</Fiona>
</student>
</Students>
Javascript:
var x = xmlDoc.getElementsByTagName("student");
for(i = 0; i < x.length; i++)
{
var id = x[i].getAttribute("id");
var name = x[i].childNodes[0].nodeName; // produces '#text'
// var name = x[i].firstChild.nodeName; // produces '#text'
document.write("<p>name = " + x[i].childNodes[0].nodeName + "</p>"); // produces '#text'
var age = x[i].getElementsByTagName("age")[0].childNodes[0].nodeValue;
var gender = x[i].getElementsByTagName("gender")[0].childNodes[0].nodeValue;
var student= {id:id, name:name, age:age, gender:gender };
}
在我的 XML 示例中,我知道可以更好地存储学生的姓名,但这只是一个基于我正在使用的固定 XML 结构的示例。
此外:读取和显示 XML 文件仅在通过 IDE 运行时有效。我最终希望能够运行 .html 文件并让 javascript 代码读取 xml 文件(存储在与 html 文件相同的位置)并显示其数据。
编辑:第一部分已解决。仍然可以使用上面“进一步”的帮助。
最佳答案
啊这个老栗子,我也遇到了同样的问题,试试吧
var name = x[i].children[0].nodeName;
这应该只获取第一个 xml。
基本上,问题出在您的列表中,您有 0:text 1:XMLNode、2:XMLnode 等。
要仅获取 xml 内容,您可以使用子元素而不是子节点,这与 HTML 元素非常相似 编辑此示例不起作用
实际答案:
循环时需要使用typof检查child的类型
关于javascript - 无法使用 Javascript 显示 XML 元素名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26829693/