【发布时间】:2012-10-08 23:12:02
【问题描述】:
我有问题。我有几个 xml 文件,其中随机包含带有 CDATA 和 reqular xml 节点的节点。我需要读取这些节点的内容,但不确定如何确定该节点是普通 xml 节点、CDATA 节点还是包含两者混合的节点,其中开头和结尾的 CDATA 部分可能包含任何事物。 (如果有帮助,我正在使用 xPath 来引用我的节点)
用于检索节点文本内容的行:
contentObj.text = contentNode.selectSingleNode("./text").text;
导致问题的xml示例:
<text>
<![CDATA[<P align=center> </P>
<P align=center>]]>
<media identifier="005896523">
<label>
<![CDATA[NOTE]]>
</label>
<description>
<![CDATA[Image for NOTE]]>
</description>
<comments>Update Required</comments>
</media>
<![CDATA[</P>
<P> </P>
<P align=left> </P>]]>
</text>
【问题讨论】:
-
CDATA 只是另一种引用文本的方式。它始终是文本节点的一部分。
-
我知道 CDATA 是透明的,然后我调用 node.text,但是在上面的 xml 中,如果我调用 node.text,我不仅得到 cdata 中包含的前 2 行,还得到文本任何非 CDATA 节点的值。我需要能够在示例中分离 CDATA XML CDATA 混合物,或者至少能够识别节点包含 CDATA,因为它可能不在完整 XML 结构的其他迭代中。
-
您无法区分 CDATA 部分及其周围的文本。如果它们之间有什么(一个元素),你可以。您将哪个节点称为 node.text?请注意,如果有多个文本节点,XPath 可以返回一个节点列表。
-
我使用以下行来读取
节点的内容。 contentObj.text = contentNode.selectSingleNode("./text").text;它检索封装在文本节点的 CDATA 部分中的文本,但是由于某种未知原因,同一节点内还有其他 xml 节点,但是它们不在 cdata 部分内 -
(./text/text())[1]、(./text/text())[2]等返回什么?
标签: javascript xml xpath cdata xmldom