将XML中的属性转换为JSON

Zaifa Xi

我有一个XML文档,想将其转换为JSON字符串:

<?xml  version="1.0" encoding="UTF-8"?>
<root name="test-root">
<id lang="en">9876</id>
<jobCode name="Teacher" xmlns:teacher="http://example.com/ns/teacher">1009</jobCode>
</root>

我使用此自定义配置来做到这一点:

let $config := json:config("custom")     
let $_ := map:put( $config, "whitespace", "ignore" )
let $_ := map:put( $config, "ignore-attribute-names",(xs:QName("name"),xs:QName("lang")) )
return json:transform-to-json( fn:doc("/test1.xml"),$config)

以下是此脚本的输出:

{
    "root": {
        "id": "9876", 
        "jobCode": "1009"
    }
}

这不是我所期望的,我想在元素根目录中包含name属性,但忽略元素jobCode中name属性我所期望的如下:

{
    "root": {
        "name": "test-root",
        "id": "9876", 
        "jobCode": "1009"
    }
}

如何自定义配置以获取此输出?谢谢!

戴维·恩尼斯

我不认为该选项像您希望的那样先进。

在这种情况下,我将使用样式表对XML进行预处理,以进一步完善它。这是一个工作示例:

  xquery version "1.0-ml";
import module namespace json="http://marklogic.com/xdmp/json"
 at "/MarkLogic/json/json.xqy";


let $xml := <root name="test-root">
<id lang="en">9876</id>
<jobCode name="Teacher"    xmlns:teacher="http://example.com/ns/teacher">1009</jobCode>
</root>

let $template := <xsl:stylesheet version="1.0"     xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="@name[name(./..) = 'jobCode']" />

<xsl:template match="@*|node()">
    <xsl:copy>
        <xsl:apply-templates select="@*|node()"/>
    </xsl:copy>
</xsl:template>
</xsl:stylesheet>

let $filtered-xml := xdmp:xslt-eval($template, $xml)

let $config := json:config("custom")     
let $_ := map:put( $config, "whitespace", "ignore" )
let $_ := map:put( $config, "ignore-attribute-names",(xs:QName("lang")) )
return json:transform-to-json( $filtered-xml,$config)

结果:

{
  "root": {
    "name": "test-root",
    "id": "9876",
    "jobCode": "1009"
  }
}

如果走这条路线,那么您也可以在模板中的@lang上进行匹配,并将所有的ignore-attribute配置一起删除。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用XSLT / XSL将基于属性的xml转换为json,并忽略especific元素中的属性

来自分类Dev

如何使用XSLT / XSL将基于属性的xml转换为json,并忽略especific元素中的属性

来自分类Dev

将.xml转换为JSON

来自分类Dev

将 XML 转换为 JSON

来自分类Dev

使用属性将C#中的对象转换为JSON

来自分类Dev

将属性值转换为xml元素

来自分类Dev

将XML元素转换为属性

来自分类Dev

将XML转换为Json并从转换后的Json中删除XML声明

来自分类Dev

使用JSON将XML转换为PHP数组将删除某些元素上的属性

来自分类Dev

将Atom(XML)转换为JSON

来自分类Dev

xsl将xml转换为json

来自分类Dev

如何将jSON转换为XML

来自分类Dev

使用PostgreSQL将XML转换为JSON

来自分类Dev

无法将json转换为xml

来自分类Dev

使用XSLT将XML转换为JSON

来自分类Dev

通过XSLT将XML转换为JSON

来自分类Dev

如何将XML转换为JSON

来自分类Dev

使用Powershell将XML转换为JSON

来自分类Dev

使用PHP将JSON转换为XML

来自分类Dev

使用XSLT将JSON转换为Xml

来自分类Dev

xsl将xml转换为json

来自分类Dev

使用Groovy将JSON转换为XML?

来自分类Dev

将xml转换为json错误

来自分类Dev

将转义的json转换为xml

来自分类Dev

使用 xslt 将 xml 转换为 json

来自分类Dev

将 mongoexport json 转换为 XML

来自分类Dev

将 json 对象转换为 xml

来自分类Dev

将C#类属性转换为XML属性

来自分类Dev

使用属性字段将XML转换为NiFi拆分处理器的Json