javascript - XML 节点和文本值。这是正确的吗?

标签 javascript xml nodes

我有以下 XML 部分。我似乎可以回答两个问题:它是有效的 XML 吗? (在“FOO”内有一个值和子节点。问题2(更重要的一个),如何在JavaScript中分别访问“TEXT”值和“BOO”节点?

<FOO>
    TEXT
    <BOO>
    </BOO>
    <BOO>
    </BOO>
</FOO>

尝试过 .firstChild.nodeValue ,效果很好。 (返回 TEXT 的值)但是,如果 TEXT 为空,则会出现问题。它返回一个 [Object Element](BOO 节点)。所以基本上 - 我想获取 TEXT 文本(如果存在),如果不存在,我想获取 null 或等效值。

最佳答案

是的,这是一个有效的 XML。 这是有效 XML 的一些基本规则:

  • XML 文档必须有根元素
  • XML 元素必须有结束标记
  • XML 标签区分大小写
  • XML 元素必须正确嵌套
  • XML 属性值必须加引号

拥有此 XML 文档:

<CATALOG>
  VERSION_1
  <CD>
    <TITLE>Empire Burlesque</TITLE>
    <ARTIST>Bob Dylan</ARTIST>
    <COUNTRY>USA</COUNTRY>
    <COMPANY>Columbia</COMPANY>
    <PRICE>10.90</PRICE>
    <YEAR>1985</YEAR>
   </CD>
   <CD>
     <TITLE>Hide your heart</TITLE>
     <ARTIST>Bonnie Tyler</ARTIST>
     <COUNTRY>UK</COUNTRY>
     <COMPANY>CBS Records</COMPANY>
     <PRICE>9.90</PRICE>
     <YEAR>1988</YEAR>
   </CD>
</CATALOG>

您可以使用如下代码在 JavaScript 中访问该文档:

x=xmlDoc.getElementsByTagName("CD");
i=0;

function displayCD()
{
   // What you want here --->
   textInRootElemnt=xmlDoc.getElementsByTagName("CATALOG")[0].childNodes[0].nodeValue;


   artist=(x[i].getElementsByTagName("ARTIST")[0].childNodes[0].nodeValue);
   title=(x[i].getElementsByTagName("TITLE")[0].childNodes[0].nodeValue);
   year=(x[i].getElementsByTagName("YEAR")[0].childNodes[0].nodeValue);
   txt="Artist: " + artist + "<br />Title: " + title + "<br />Year: "+ year;
   document.getElementById("showCD").innerHTML=txt;
}

其中 xmlDoc 是您加载的文档。

考虑以下非常基本的 tutorial 关于 XML。

关于javascript - XML 节点和文本值。这是正确的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20212400/

相关文章:

Android:在编程布局中使用预定义的维度参数

javascript - 如何将 DOM 关键字包装在 span 标签中

javascript - html5 Canvas : How do I draw a really long wave/curve and get the bounds from it?

javascript - node.js 哈希,检索 key ?

javascript - 无论我选择什么,复选框总是被选中

php - 尝试运行新单元测试时出现 "ParsePI: PI php never end"

javascript - Onclick 函数打开新窗口并计算点击次数

C# - 将 XML 元素转换为连接字符串中的键值对

swift - 添加触摸开始处的节点

c# - 在图中查找多个环