Marklogic 转换为json——自定义配置删除元素?没有阵列?

Marklogic 转换为json——自定义配置删除元素?没有阵列?,marklogic,Marklogic,我有以下xml <foods xmlns="http://example.com/agt" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > <food id="1" name="celery"> <price>50.2</price> </food> <food id="2" name="beets"> <price&g

我有以下xml

<foods
  xmlns="http://example.com/agt"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>
  <food id="1" name="celery">
    <price>50.2</price>
  </food>
  <food id="2" name="beets">
    <price>23.3</price>
  </food>
  <food id="3" name="goat cheese">
    <price>0.5</price>
  </food>
</foods>
。。。我得到:

{"foods":{"food":{"id":3, "name":"goat cheese", "price":0.5}}}
有些东西不适合我。食物成分发生了什么变化?没有数组,只有最后一个数组进入输出。请注意,去掉数组元素名称并不能解决缺少的食物元素


这是一个错误还是我做错了?我刚开始使用MarkLogic Server,所以我很可能做错了。感谢您的建议。

您需要指出食物是数组元素。 由于您现在已将食物放在名称空间中,因此数组元素名称找不到它。 您需要使用xs:QName()来给出“food”的全名,或者使用

e、 g.这应该行得通

  , $_ := map:put($c,"array-element-names", xs:QName("agt:food") )
或者

   , $_ := map:put($c,"element-namespace","http://example.com/agt")

这有一个很好的副作用,使转换可逆。

谢谢!我完全忽略了名称空间问题。对于那些感兴趣的人来说,这次讨论是在。
  , $_ := map:put($c,"array-element-names", xs:QName("agt:food") )
   , $_ := map:put($c,"element-namespace","http://example.com/agt")