Javascript nodejs元素树npm xml解析
我试图解析下面的示例XML文件,以便从中获取一些数据。以下是XML文件:Javascript nodejs元素树npm xml解析,javascript,node.js,xml,parsing,elementtree,Javascript,Node.js,Xml,Parsing,Elementtree,我试图解析下面的示例XML文件,以便从中获取一些数据。以下是XML文件: <Benchmark xmlns="http://checklists.nist.gov/xccdf/1.1" xmlns:xsi="www.w3.org/2001/XMLSchema-instance" id="SAP-HANA" resolved="1" xml:lang="en-US"> <status date="2016-03-17">draft</status> <
<Benchmark xmlns="http://checklists.nist.gov/xccdf/1.1" xmlns:xsi="www.w3.org/2001/XMLSchema-instance" id="SAP-HANA" resolved="1" xml:lang="en-US">
<status date="2016-03-17">draft</status>
<title xmlns:xhtml="http://www.w3.org/1999/xhtml" xml:lang="en-US">Guide to the Secure Configuration of SAP HANA</title>
<version>0.1.28</version>
<Profile id="profile1">
<title xmlns:xhtml="http://www.w3.org/1999/xhtml" xml:lang="en-US">text1</title>
<select idref="This is rule 1" selected="true"/>
<set-value idref="ssfs_master_key_timeout">20</set-value>
</Profile>
<Profile id="profile2">
<title xmlns:xhtml="http://www.w3.org/1999/xhtml" xml:lang="en-US">text2</title>
<select idref="this is rule1" selected="true"/>
<select idref="this is rule1" selected="true"/>
<select idref="this is rule1" selected="true"/>
</Profile>
</Benchmark>
我可以获取id,但无法获取其标记的文本内容。以下是我的代码:
var fs = require('fs');
var et = require('elementtree');
var XML = et.XML;
var ElementTree = et.ElementTree;
var element = et.Element;
var subElement = et.SubElement;
var data, etree;
data = fs.readFileSync('my.xml').toString();
etree = et.parse(data);
var length = etree.findall('./Profile').length;
for (var i = 0; i < length; i++) {
console.log(etree.findall('./Profile')[i].get('id'));
console.log(etree.findtext('./Profile/title')); // dont know, where to place [i]
// var profile = etree.findall('./Profile')[i].get('id');
// console.log(etree.findtext('./Profile'[@id=’profile’]'/title'));
//console.log(etree.findall('./Profile'[i]'/title'));
//console.log(list[i]);
}
var fs=require('fs');
var et=require('elementtree');
var XML=et.XML;
var ElementTree=et.ElementTree;
var元素=等元素;
var子元素=et子元素;
var数据,etree;
data=fs.readFileSync('my.xml').toString();
etree=et.parse(数据);
变量长度=etree.findall('./Profile').length;
对于(变量i=0;i
您可以获得如下文本:
for all profile in XML{
get its attribute "id".
get its <title> tag's text content.
}
console.log(etree.findall('./Profile')[i].find('title').text);
但我也会对代码进行重构,使其不调用.findall多次,如下所示:
for all profile in XML{
get its attribute "id".
get its <title> tag's text content.
}
console.log(etree.findall('./Profile')[i].find('title').text);
var profiles=etree.findall('./Profile');
对于(变量i=0;i }
您可以获得如下文本:
for all profile in XML{
get its attribute "id".
get its <title> tag's text content.
}
console.log(etree.findall('./Profile')[i].find('title').text);
但我也会对代码进行重构,使其不调用.findall多次,如下所示:
for all profile in XML{
get its attribute "id".
get its <title> tag's text content.
}
console.log(etree.findall('./Profile')[i].find('title').text);
var profiles=etree.findall('./Profile');
对于(变量i=0;i }
Hi Antonio,我在elementTree模块上又遇到了一个问题。你能为下面的链接中的问题推荐任何好的nodejs模块吗。稍后我可能需要进一步深入研究xml解析。我随时可能再次遇到问题。或任何有关elemenTree模块的良好文档@HemantYadav回答了这个问题。我会选择xml2js。我自己没有试过,但在GitHub它就像是2.3k(而elementtree只有88颗星)的星星。嗨@Antonio Narkevich,这有什么帮助吗。嗨,Antonio,我在elementTree模块上又遇到了一个问题。你能为下面的链接中的问题推荐任何好的nodejs模块吗。稍后我可能需要进一步深入研究xml解析。我随时可能再次遇到问题。或任何有关elemenTree模块的良好文档@HemantYadav回答了这个问题。我会选择xml2js。我自己没有试过,但在GitHub它就像是2.3k(而elementtree只有88颗星)的星星。嗨@Antonio Narkevich,这有什么帮助吗。