BizTalk - 在属性上放置命名空间?

时间:2016-09-14 13:40:55

标签: json xml xsd biztalk biztalk-2010

参考使用“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

1 个答案:

答案 0 :(得分:1)

正如Sprotty在评论中所说,将Attribute FormDefault或Attribute Field From设置为Qualified以获取属性上的名称空间前缀。

Attribute FormDefault Attribute Field Form

设置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>