gpt4 book ai didi

javascript - 测试 xml 中是否有空文本节点

转载 作者:行者123 更新时间:2023-12-02 18:36:40 25 4
gpt4 key购买 nike

使用 Ajax 获取 XML 数据。关于空白文本节点的问题

我在这里阅读了这个问题/答案 Javascript/XML - Getting the node name

这帮助我理解了结构的设置方式,但是我仍然有一两个问题......当他提到这部分时:

“带有回车符和一些空格或制表符的文本节点”

您将如何测试是否获得了这样的空文本节点?我尝试测试看看:

if nodeValue == null
nodeValue == "null"
nodeValue == ""
nodeValue == " "

这些似乎都不起作用

我想长度可能是0,所以我测试了.length,它返回了5(1个返回键和4个选项卡..在其中添加了一个额外的选项卡并再次测试它返回了6)

然后我在谷歌上搜索了如何删除空格并使用了这些:

.replace(/\s+/g, ' ');
.replace(/^\s+|\s+$/g, '');

都不起作用,但仍然说 .length 仍然是 5

我想对此进行测试的原因是,如果我事先不知道每个元素节点名称或 DOM 的具体设置方式会怎样。

或者是否有更好的导航方式,而无需费心检查文本节点是否只是制表符/空格/返回键?

最佳答案

.replace(/^\s+|\s+$/g, ''); 有效,除非空格/制表符不是真正的空格和制表符,而是其他各种 Unicode 空格之一类似的 Angular 色。所以我猜你没有正确使用它。

使用方法如下:

if (!textNode.nodeValue.replace(/^\s+|\s+$/g, '')) {
// Node is empty
}

示例:Live Copy | Live Source

var xml = parseXml("<test>\n\t\t\t</test>");
var textNode = xml.documentElement.firstChild;
display("textNode.nodeValue.length = " +
textNode.nodeValue.length);
display('Is "empty"? ' +
(!textNode.nodeValue.replace(/^\s+|\s+$/g, '')));

function display(msg) {
var p = document.createElement('p');
p.innerHTML = String(msg);
document.body.appendChild(p);
}

输出:

textNode.nodeValue.length = 4Is "empty"? true

(Where parseXML is from this answer.)


But we really don't need to do a replace (although the overhead of doing it is trivial). A test like this would do it:

if (/^\s*$/.test(textNode.nodeValue)) {
// The node is "empty"
}

该正则表达式(两端带有 anchor 的零个或多个空白字符)将仅匹配已经为空或仅由空白字符组成的字符串。

关于javascript - 测试 xml 中是否有空文本节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17255748/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com