MarkLogic : XML 到 JSON 转换中的数组规范
MarkLogic : Array specification in XML to JSON conversion
MarkLogic 版本:9.0-6.2
我们有一个 XML 文档,其中元素 'CustomerInfo' 出现在多个地方。根据模式定义,此元素在一个地方是一个数组 (maxOccurs="unbounded"),但在所有其他地方都是常规元素。
我正在尝试使用自定义配置将 XML 转换为 JSON,并提供我希望将 'CustomerInfo' 元素转换为数组的确切路径。
下面是示例数据...
<instance>
<tns:CustomerDownload xmlns:tns="http://new.webservice.namespace"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<tns:CustomerDownloadInfo>
<tns:CustomerInfo>
...
...
下面是代码...
const JsonConfig = json.config('custom');
JsonConfig['array-element-names'] =
['\instance\CustomerDownload\CustomerDownloadInfo\CustomerInfo']
此代码未将元素转换为数组。如果我只是给出如下的元素名称,那么我会看到它已转换为数组。
JsonConfig['array-element-names'] =['CustomerInfo']
我也尝试了如下的 QName,但仍然没有转换为数组。
JsonConfig['array-element-names'] =
[xs.QName('\instance\CustomerDownload\CustomerDownloadInfo\CustomerInfo')]
如何在 JsonConfig['array-element-names'] 中指定确切路径,以便我可以明确控制要将哪些元素转换为数组?
提前致谢!
使用“\”作为名称的一部分并不符合您的想法。它实际上是使用“\”作为名称的一部分而不是路径规范。
如果您的 xml/schema 在文档的不同位置使用相同的 QName 而您不希望受到相同的对待,那么这对您不起作用(没有用于指定 path 为特殊用途的名称)。
大多数标准模式不会重用具有不同结构的相同 QName——这是可能的,但并不常见——如果你可以在所有情况下简单地使用 "CustomerInfo" 而不管文档中的路径,那么你好,就"CustomerInfo".
如果您必须以不同方式处理文档中的不同路径,我会做的是首先将您的文档预处理为中间形式,用唯一命名的元素替换所有 'special' 元素,然后您可以 运行 运行 对中间文件的转换。如果您选择使用相同的基本名称但使用不同的命名空间,那么生成的 JSON 输出(默认情况下会丢弃命名空间)将是相同的并且不需要进一步处理。
MarkLogic 版本:9.0-6.2
我们有一个 XML 文档,其中元素 'CustomerInfo' 出现在多个地方。根据模式定义,此元素在一个地方是一个数组 (maxOccurs="unbounded"),但在所有其他地方都是常规元素。
我正在尝试使用自定义配置将 XML 转换为 JSON,并提供我希望将 'CustomerInfo' 元素转换为数组的确切路径。
下面是示例数据...
<instance>
<tns:CustomerDownload xmlns:tns="http://new.webservice.namespace"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<tns:CustomerDownloadInfo>
<tns:CustomerInfo>
...
...
下面是代码...
const JsonConfig = json.config('custom');
JsonConfig['array-element-names'] =
['\instance\CustomerDownload\CustomerDownloadInfo\CustomerInfo']
此代码未将元素转换为数组。如果我只是给出如下的元素名称,那么我会看到它已转换为数组。
JsonConfig['array-element-names'] =['CustomerInfo']
我也尝试了如下的 QName,但仍然没有转换为数组。
JsonConfig['array-element-names'] =
[xs.QName('\instance\CustomerDownload\CustomerDownloadInfo\CustomerInfo')]
如何在 JsonConfig['array-element-names'] 中指定确切路径,以便我可以明确控制要将哪些元素转换为数组?
提前致谢!
使用“\”作为名称的一部分并不符合您的想法。它实际上是使用“\”作为名称的一部分而不是路径规范。 如果您的 xml/schema 在文档的不同位置使用相同的 QName 而您不希望受到相同的对待,那么这对您不起作用(没有用于指定 path 为特殊用途的名称)。
大多数标准模式不会重用具有不同结构的相同 QName——这是可能的,但并不常见——如果你可以在所有情况下简单地使用 "CustomerInfo" 而不管文档中的路径,那么你好,就"CustomerInfo".
如果您必须以不同方式处理文档中的不同路径,我会做的是首先将您的文档预处理为中间形式,用唯一命名的元素替换所有 'special' 元素,然后您可以 运行 运行 对中间文件的转换。如果您选择使用相同的基本名称但使用不同的命名空间,那么生成的 JSON 输出(默认情况下会丢弃命名空间)将是相同的并且不需要进一步处理。