从javascript读取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.nodeValue);从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
虽然我们不能确定没有解析的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吗?没有问题,没有上下文,什么都没有。