Javascript/XML-获取节点名称
我需要得到标签“myChild”和“content”的名称。 这很简单,但我困住了,困了,以下是我的测试结果: XML: 您需要Javascript/XML-获取节点名称,javascript,xml,parsing,dom,Javascript,Xml,Parsing,Dom,我需要得到标签“myChild”和“content”的名称。 这很简单,但我困住了,困了,以下是我的测试结果: XML: 您需要标记名,它是元素的名称。(很抱歉,对于元素s,标记名和节点名是相同的。) 问题在于myParent元素的第一个子元素不是myChild元素,而是一个文本节点(包含空格)。您的结构如下所示: 元素“myParent” 带有回车符和一些空格或制表符的文本节点 元素“myChild” 带有“内容”的文本节点 带有回车符和一些空格或制表符的文本节点 元素“myPare
标记名
,它是元素的名称。(很抱歉,对于元素
s,标记名
和节点名
是相同的。)
问题在于myParent
元素的第一个子元素不是myChild
元素,而是一个文本节点(包含空格)。您的结构如下所示:
- 元素“myParent”
- 带有回车符和一些空格或制表符的文本节点
- 元素“myChild”
- 带有“内容”的文本节点
- 带有回车符和一些空格或制表符的文本节点
- 元素“myParent”
- 带有回车符和一些空格或制表符的文本节点
- 元素“myChild”
- 带有“内容”的文本节点
- 带有回车符和一些空格或制表符的文本节点
myChild
元素,您可以再次使用getElementsByTagName
执行此操作,或者只需扫描:
var x=xmlDoc.getElementsByTagName("myParent");
var c = x[1].firstChild;
while (c && c.nodeType != 1) { // 1 = ELEMENT_NODE
c = c.nextSibling;
}
alert(c.nodeName); // "myChild"
请注意,元素
s没有有意义的节点值
属性;而是收集它们的子文本节点。(更多信息请参见DOM规范:,)
还要注意,在索引到节点列表时,索引从0
开始。您似乎是从1
开始的;如果出于某种原因跳过第一条注释,请忽略此注释
主题外:最好了解您正在使用的基本机制,我建议您使用纯DOM并参考上面列出的DOM规范。但是对于与这些树的交互,一个好的库是非常有用的,可以为您节省很多时间。可以很好地处理XML数据。我没有在XML中使用任何其他类似、或的方法,因此我不能这样说,但我希望至少有一些方法支持它。尝试x[1]。改为getElementsByTagName('*')[0]
(这仅适用于索引0,如果直接子节点包含更多的元素节点,则其他索引可能返回非子节点的元素。)
var x=xmlDoc.getElementsByTagName("myParent");
alert(x[1].childNodes[0].nodeName); //returns "#text" - "myChild" needed
alert(x[1].childNodes[0].nodeValue); //returns "" - "content" needed
var x=xmlDoc.getElementsByTagName("myParent");
var c = x[1].firstChild;
while (c && c.nodeType != 1) { // 1 = ELEMENT_NODE
c = c.nextSibling;
}
alert(c.nodeName); // "myChild"