介绍
npm 包 camaro 是一个用于将 XML 转换成 JSON 的工具。它使用 XPath 或 CSS 选择器来定义转换规则,使 XML 转换成 JSON 更加灵活。同时,camaro 包括了一些其他功能,例如:缓存,验证,类型转换等。
安装
使用 npm 安装 camaro:
npm install camaro
使用
使用 camaro 最主要的是定义转换规则。转换规则接受 XML 和 camaro 使用者定义的选择器,返回转换后的 JSON。
例如,假设我们需要将下面的 XML:
-- -------------------- ---- ------- ------ -------- ---------- ---------- ------------- --------- -------- ---------- ---------- ------------- --------- -------
转换成 JSON,我们可以使用以下转换规则:
-- -------------------- ---- ------- ----- - --------- - - ----------------- ----- --- - - ------ -------- ---------- ---------- ------------- --------- -------- ---------- ---------- ------------- --------- ------- - ----- -------- - - ------- ------------ - ----- ------- ---- ----- -- - ----- ------ - -------------- --------- -------------------
运行上面的代码将会输出以下结果:
-- -------------------- ---- ------- - ------- - - ----- ----- ----- ---- ---- -- - ----- ----- ----- ---- ---- - - -
上面的转换规则使用了 XPath 选择器 //person
来选取每个 person
元素,并用一个对象来定义每个 person
元素的转换规则。
除了 XPath 选择器,camaro 还支持 CSS 选择器:
const cssTemplate = { people: ['.person', { name: 'span:nth-of-type(1)', age: 'span:nth-of-type(2)' }] }
更多选择器
除了标准的选择器,camaro 还提供了其他选择器供用户使用。
array
该选择器用于指定数组的成员,对于每个成员都应有不同的规则:
const template = { users: ['//user', { name: 'name', avatar: 'avatar', emails: [ 'emails/email' ] }] }
text
该选择器用于选择元素的文本,例如:
xml:
<msg>Hello camaro</msg>
template:
{ message: 'msg/text()' }
attribute
该选择器用于选择元素的属性:
xml:
<root> <entry date="2019-05-29">Hello</entry> <entry date="2019-05-30">World</entry> </root>
template:
{ entries: ['//entry', { date: '@date', text: '.' }] }
namespace
该选择器用于指定命名空间:
-- -------------------- ---- ------- ----- - --------- - - ----------------- ----- --- - - ----- ------------------------------ ------------------------------- ------------- --------------- ------------- --------------- ------- - ----- -------- - - ------ ---------------------------- - ---------- ------ ------ --- -- - -------------------------- ----------
输出结果:
{ items: [ { namespace: 'https://foo.com/ns', value: 'Foo item' }, { namespace: 'https://bar.com/ns', value: 'Bar item' } ] }
更多选项
camaro 还提供了很多选项供用户使用,例如:
cache
: 是否缓存转换规则;returnFirst
: 是否只返回第一个匹配到的元素;format
: 是否格式化输出 JSON;normalize
: 是否将元素的文本进行规范化。
总结
camaro 可以很方便地将 XML 转换成 JSON。它可以使用 XPath 或 CSS 选择器来定义转换规则,并可以使用一些其他的选择器。同时,camaro 还提供了很多选项让用户定制转换规则的行为。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/5eedaad8b5cbfe1ea06105b6