javascript - 无法使用 Javascript 显示 XML 元素名称

标签 javascript xml html

我有一个带有 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/

相关文章:

javascript - angular-bootstrap 添加新指令不起作用

javascript - 从数组中查找包含指定单词的 div 的类名

c# - 如何在 C# 中生成和使用 xml?

java - 使用java解析xml中的元素数组

html - 正文背景图片未填满页面

asp.net - 在 ASP.NET 中禁用时更改 RadCombobox 字体颜色

javascript - 如何获取 ENV 类型 Laravel + VueJS + Homestead

javascript - 如何将 xml 节点从一个标签复制或附加到另一个标签

javascript - 多个输入框 - alertifyjs/Jquery

javascript - 如何从 jQuery 选择器生成的集合中提取数据?