gpt4 book ai didi

javascript - 如何使用 libxmljs (Node.js) 处理子 Node

转载 作者:行者123 更新时间:2023-11-30 18:42:15 26 4
gpt4 key购买 nike

当我尝试使用 libxmljs 解析以下 xml 时,我感到困惑:

<?xml version="1.0" encoding="UTF-8"?><ResultSet>    <Result>        <Title>Title 1</Title>        <Summary>Summary 1</Summary>    </Result>    <Result>        <Title>Title 2</Title>        <Summary>Summary 2</Summary>    </Result></ResultSet>

I tried following code:

var libxmljs = require("libxmljs");
var xmlDoc = libxmljs.parseXmlFile("sample.xml");
xmlDoc.root().childNodes().length; // 5

我认为第三行的 length 属性应该是 2,因为有 2 个 Result Node ,它们是根 Node 的子 Node 。

顺便说一句,我检查了每个元素,例如:

xmlDoc.root().childNodes()[0].get("Title").text(); // TypeError: Cannot call method 'text' of undefined
xmlDoc.root().childNodes()[1].get("Title").text(); // Title 1
xmlDoc.root().childNodes()[2].get("Title").text(); // TypeError: Cannot call method 'text' of undefined
xmlDoc.root().childNodes()[3].get("Title").text(); // Title 2
xmlDoc.root().childNodes()[4].get("Title").text(); // TypeError: Cannot call method 'text' of undefined

为什么会有一些不相关的子 Node ?提前致谢!

(我的libxmljs版本是0.4.2)

最佳答案

如果您无法删除空格,您有两个简单的解决方案:

要么在使用之前检查每个 Node 的类型:

xmlDoc.root().childNodes()[0].type() // 'text'

将是 'text''element'。您可以忽略文本。

不过更好的方法是使用 xpath 系统。您可以这样找到所有实际元素:

xmlDoc.find('*')[0].get('Title').text() // 'Title 1'

或者您甚至可以直接通过 xpath 访问标题 Node :

xmlDoc.find('*/Title')[0].text() // 'Title 1'

关于javascript - 如何使用 libxmljs (Node.js) 处理子 Node ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6530484/

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