<![CDATA [测试]] GT; 我得到了空白。
var dataNode=Ext.DomQuery.selectNode('data',xml); console.log(dataNode.childNodes[0].nodeValue); console.log(dataNode.nodeValue);
答案 0 :(得分:5)
虽然我们不能确定没有正在解析的XML,但是从childNodes[0]
(firstChild
)“获取空白”的通常原因是父节点之间有一个空白的Text节点start-tag和您要查找的节点:
<data>
<![CDATA[ foo ]]>
</data>
在保留CDATA部分的XML解析器上,它将为data
元素提供三个子节点:一个包含换行符和一些空格的Text节点; CDATASection节点;和另一个带换行符的Text节点。
所以你可以接受childNodes[1]
,但它有点脆弱......特别是它会破坏XML解析器,将CDATA部分转换成文本,你会得到一个单个文本子项包含foo
和所有空格。可能更好地采用textContent
元素的<data>
(当然除了回溯到innerText
的IE)。
答案 1 :(得分:0)
尝试使用.contents()返回整个内容(包括CDATA) - http://api.jquery.com/contents/
答案 2 :(得分:0)
const parser = new DOMParser();
const xml = parser.parseFromString('XML_GOES_HERE', 'text/xml').documentElement;
const someElement = xml.getElementsByTagName('MY_TAG');
// using `wholeText` will allow us to read CDATA when it's located in a new line
const cdataValue = someElement?.firstChild?.wholeText?.trim();