npm 包 camaro 使用教程

阅读时长 5 分钟读完

介绍

npm 包 camaro 是一个用于将 XML 转换成 JSON 的工具。它使用 XPath 或 CSS 选择器来定义转换规则,使 XML 转换成 JSON 更加灵活。同时,camaro 包括了一些其他功能,例如:缓存,验证,类型转换等。

安装

使用 npm 安装 camaro:

使用

使用 camaro 最主要的是定义转换规则。转换规则接受 XML 和 camaro 使用者定义的选择器,返回转换后的 JSON。

例如,假设我们需要将下面的 XML:

-- -------------------- ---- -------
------
  --------
    ---------- ----------
    -------------
  ---------
  --------
    ---------- ----------
    -------------
  ---------
-------

转换成 JSON,我们可以使用以下转换规则:

-- -------------------- ---- -------
----- - --------- - - -----------------

----- --- - -
  ------
    --------
      ---------- ----------
      -------------
    ---------
    --------
      ---------- ----------
      -------------
    ---------
  -------
-

----- -------- - -
  ------- ------------ -
    ----- -------
    ---- -----
  --
-

----- ------ - -------------- ---------

-------------------

运行上面的代码将会输出以下结果:

-- -------------------- ---- -------
-
  ------- -
    -
      ----- ----- -----
      ---- ----
    --
    -
      ----- ----- -----
      ---- ----
    -
  -
-

上面的转换规则使用了 XPath 选择器 //person 来选取每个 person 元素,并用一个对象来定义每个 person 元素的转换规则。

除了 XPath 选择器,camaro 还支持 CSS 选择器:

更多选择器

除了标准的选择器,camaro 还提供了其他选择器供用户使用。

array

该选择器用于指定数组的成员,对于每个成员都应有不同的规则:

text

该选择器用于选择元素的文本,例如:

xml:

template:

attribute

该选择器用于选择元素的属性:

xml:

template:

namespace

该选择器用于指定命名空间:

-- -------------------- ---- -------
----- - --------- - - -----------------

----- --- - -
  ----- ------------------------------ -------------------------------
    ------------- ---------------
    ------------- ---------------
  -------
-

----- -------- - -
  ------ ---------------------------- -
    ---------- ------
    ------ ---
  --
-

-------------------------- ----------

输出结果:

更多选项

camaro 还提供了很多选项供用户使用,例如:

  • cache: 是否缓存转换规则;
  • returnFirst: 是否只返回第一个匹配到的元素;
  • format: 是否格式化输出 JSON;
  • normalize: 是否将元素的文本进行规范化。

总结

camaro 可以很方便地将 XML 转换成 JSON。它可以使用 XPath 或 CSS 选择器来定义转换规则,并可以使用一些其他的选择器。同时,camaro 还提供了很多选项让用户定制转换规则的行为。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/5eedaad8b5cbfe1ea06105b6

纠错
反馈