Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从javascript读取xml格式的cdata_Xml_Cdata - Fatal编程技术网

从javascript读取xml格式的cdata

从javascript读取xml格式的cdata,xml,cdata,Xml,Cdata,我得到了空白 var dataNode=Ext.DomQuery.selectNode('data',xml); console.log(dataNode.childNodes[0].nodeValue); console.log(dataNode.nodeValue); var dataNode=Ext.DomQuery.selectNode('data',xml); console.log(dataNode.childNodes[0].nodeValue); log(dataNode.nod

我得到了空白

var dataNode=Ext.DomQuery.selectNode('data',xml); console.log(dataNode.childNodes[0].nodeValue); console.log(dataNode.nodeValue); var dataNode=Ext.DomQuery.selectNode('data',xml); console.log(dataNode.childNodes[0].nodeValue); log(dataNode.nodeValue);
虽然我们不能确定没有解析的XML,但是从
childNodes[0]
firstChild
)中“获取空白”的通常原因是父节点的开始标记和您要查找的节点之间有一个空白文本节点:

<data>
    <![CDATA[ foo ]]>
</data>

在保留CDATA部分的XML解析器上,这将为
数据
元素提供三个子元素:一个包含换行符和一些空格的文本节点;CDATA节节点;和另一个带有换行符的文本节点

所以你可以使用
childNodes[1]
,但它有点脆弱。。。特别是对于将CDATA部分转换为文本的XML解析器来说,这将是一个突破,您将得到一个包含
foo
和所有空白的文本子级。最好是使用
元素的
textContent
(当然,IE的
innerText
回退除外)。

尝试.contents()返回整个内容(包括CDATA)

const parser=new DOMParser();
const xml=parser.parseFromString('xml\u GOES\u HERE','text/xml')。documentElement;
const someElement=xml.getElementsByTagName('MY_标记');
//当CDATA位于新行时,使用“wholeText”将允许我们读取它
常量CDATA值=someElement?.firstChild?.wholeText?.trim();

我们能看到有问题的XML吗?没有问题,没有上下文,什么都没有。