Node JS,Cheerio,正在获取 XML 版本
Node JS, Cheerio, getting XML version
我有一个 XML 这种结构:
<?xml version="1.0" encoding="windows-1251"?>
<?xml-stylesheet type="text/xsl" href="25-1.xsl"?>
<movies>
<movie id="1">
<title>Matrix</title>
<characters>
<character>
<name>Tomas Anderson</name>
<actor>Keanu Reeves</actor>
</character>
</characters>
<plot>
Action
</plot>
<rating type="stars">5</rating>
</movie>
<movies>
我正在使用 cheerio
库来访问此 XML 的 DOM,并且我知道如何从标签中获取值。
但是,我不知道如何从 <xml version="1.0" encoding="windows-1251">
<?xml-stylesheet type="text/xsl" href="25-1.xsl"?>
获取和更改数据
是否有可能通过 cheerio 访问这些指令标签?
我测试了多个 xml 解析器(x2js
、xml-js
、xml-parser
),其中 none 似乎能够解析<?xml-stylesheet ?>
标签。
对于其中一些人,尝试解析此标记会导致无法解析整个 XML.
所以我选择这个:xml-js
以下是如何让它发挥作用:
var convert = require('xml-js');
var converted = convert.xml2json(xml, {compact: true, spaces: 2});
console.log(JSON.parse(converted));
它为您提供有关 <?xml ... ?>
标签的信息:
{ _declaration: { _attributes: { version: '1.0', encoding: 'windows-1251' } }, ... }
因此,要解决 xml-stylesheet
标签的问题,您可以使用这段代码来解析 xml 中的所有这些标签:
var styleSheets = xml.match(/<\?xml-stylesheet.*\?>/g);
var arrayCSS = styleSheets.map(css => {
var tmp1 = css.split('?').splice(1,1);
var tmp2 = tmp1[0].split(' ');
tmp2.splice(0, 1);
return tmp2.reduce((acc, el) => {
var arr = el.split('=');
acc[arr[0]] = arr[1].replace(/\"/g, '');
return acc;
}, {});
});
希望对您有所帮助,
此致
我有一个 XML 这种结构:
<?xml version="1.0" encoding="windows-1251"?>
<?xml-stylesheet type="text/xsl" href="25-1.xsl"?>
<movies>
<movie id="1">
<title>Matrix</title>
<characters>
<character>
<name>Tomas Anderson</name>
<actor>Keanu Reeves</actor>
</character>
</characters>
<plot>
Action
</plot>
<rating type="stars">5</rating>
</movie>
<movies>
我正在使用 cheerio
库来访问此 XML 的 DOM,并且我知道如何从标签中获取值。
但是,我不知道如何从 <xml version="1.0" encoding="windows-1251">
<?xml-stylesheet type="text/xsl" href="25-1.xsl"?>
是否有可能通过 cheerio 访问这些指令标签?
我测试了多个 xml 解析器(x2js
、xml-js
、xml-parser
),其中 none 似乎能够解析<?xml-stylesheet ?>
标签。
对于其中一些人,尝试解析此标记会导致无法解析整个 XML.
所以我选择这个:xml-js
以下是如何让它发挥作用:
var convert = require('xml-js');
var converted = convert.xml2json(xml, {compact: true, spaces: 2});
console.log(JSON.parse(converted));
它为您提供有关 <?xml ... ?>
标签的信息:
{ _declaration: { _attributes: { version: '1.0', encoding: 'windows-1251' } }, ... }
因此,要解决 xml-stylesheet
标签的问题,您可以使用这段代码来解析 xml 中的所有这些标签:
var styleSheets = xml.match(/<\?xml-stylesheet.*\?>/g);
var arrayCSS = styleSheets.map(css => {
var tmp1 = css.split('?').splice(1,1);
var tmp2 = tmp1[0].split(' ');
tmp2.splice(0, 1);
return tmp2.reduce((acc, el) => {
var arr = el.split('=');
acc[arr[0]] = arr[1].replace(/\"/g, '');
return acc;
}, {});
});
希望对您有所帮助,
此致