我有一个xml字符串。
<bookstore>
<book category="cooking">
<title lang="en">Everyday Italian</title>
<author>Giada De Laurentiis</author>
<year>2005</year>
<price>30.00</price>
</book>
<book category="children">
<title lang="en">Harry Potter</title>
<author>J K. Rowling</author>
<year>2005</year>
<price>29.99</price>
</book>
<book category="web">
<title lang="en">XQuery Kick Start</title>
<author>James McGovern</author>
<author>Per Bothner</author>
<author>Kurt Cagle</author>
<author>James Linn</author>
<author>Vaidyanathan Nagarajan</author>
<year>2003</year>
<price>49.99</price>
</book>
<book category="web" cover="paperback">
<title lang="en">Learning XML</title>
<author>Erik T. Ray</author>
<year>2003</year>
<price>39.95</price>
</book>
</bookstore>
我需要验证所有节点都包含某些东西(值或更多节点)。
我正在使用nodejs。我搜索是否有一个可以浏览所有节点的程序包,但我没有看到任何包,这是使用递归的唯一解决方案吗?
一个接一个的节点,如果包含一些节点,我会调用相同的功能吗?
谢谢!
答案 0 :(得分:0)
使用 xmldom 软件包,该软件包具有一种称为hasChildNodes()
的好方法,您可以通过该方法确定XML文档是否确实存在。
这里是一个示例,(您需要根据需要对其进行修改)。
var xmlDomObj = new (require('xmldom')).DOMParser;
var xmlDocument = xmlDomObj.parseFromString(YOUR_XML_VARIABLE);
var nodeObj = xmlDocument.getElementsByTagName(nodeName_you_are_looking_for)[0];
if (nodeObj) {
var currentNodeObj = nodeObj.childNodes[0];
if (!currentNodeObj) { // if the node not found
// Logic goes here if the node not found
} else {
// Logic goes here if the node is found
}
}
希望这会有所帮助!