参考使用“json:Array”的这个例子:Converting between JSON and XML
我想要构建像这样的XML元素的BizTalk架构:
<role json:Array='true'>Admin</role>
我尝试在我的项目中添加一个名为FakeJSONArraySchema.xsd的模式,然后在我的主模式上,我做了一个“导入”。使用“导入”的常规方法是创建“子记录”,然后更改它的“数据结构类型”。但是将“子记录”设置为引用模式的根元素。我只需要一个属性。
在上面的示例中,元素“role”需要位于主模式的名称空间中。
如果一切都失败了,我会尝试直接编辑.XSD。我希望这可以使用Visual Studio图形界面完成。
请参阅相关问题:Details about the json:Array feature of Newtonsoft.JSON XML to JSON converter
答案 0 :(得分:1)
正如Sprotty在评论中所说,将Attribute FormDefault或Attribute Field From设置为Qualified以获取属性上的名称空间前缀。
设置FormDefault的示例模式。
<?xml version="1.0" encoding="utf-16"?>
<xs:schema xmlns="http://james.newtonking.com/projects/json" xmlns:b="http://schemas.microsoft.com/BizTalk/2003" attributeFormDefault="qualified" targetNamespace="http://james.newtonking.com/projects/json" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="Root">
<xs:complexType>
<xs:sequence>
<xs:element name="Role">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="Array" type="xs:boolean" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
但是它不会使命名空间前缀为JSON,而只是默认的NS0。但是,只要它引用了正确的命名空间,这应该无关紧要。
<ns0:Root xmlns:ns0="http://james.newtonking.com/projects/json">
<Role ns0:Array="true">Role_0</Role>
</ns0:Root>