使用 jsonix 添加自定义 xsi 命名空间

Add custom xsi namespace with jsonix

如何使用 jsonix 将自定义 xsi 命名空间添加到 XML 文件?我们希望实现以下目标:

<network xsi:schemaLocation="http://example.com/XMLSchema ../../../Example/schema/Example.xsd">

我们能得到的最好的结果是使用命名空间前缀:

<network xmlns:schemaLocation="http://example.com/XMLSchema ../../../Example/schema/Example.xsd">

谢谢!

免责声明:我是Jsonix的作者(好吧,你知道)。

目前您可以使用 attribute property or the any attribute property 来模拟 xsi:schemaLocation,例如:

{
    type: 'attribute',
    name: 'schemaLocation',
    attributeName : { localPart: 'schemaLocation', namespaceURI : 'http://www.w3.org/2001/XMLSchema-instance' }
    typeInfo: 'String'
}

基本上,就像任何其他普通属性一样。

不过,我觉得xsi:schemaLocation应该在Jsonix.Context级别上得到支持。 目前不支持,但我认为它应该是这样的:

var context = new Jsonix.Context(mappings, {
    schemaLocations: {
        "http://example.com/XMLSchema": "../../../Example/schema/Example.xsd"
    }
});

类似于 namespacePrefixes,但将命名空间 URI 映射到架构位置。

如果您想拥有此功能,请file an issue