2016-09-14 1 views
0

Referenzierung dieses Beispiel für die Verwendung "json: Array": Converting between JSON and XMLBizTalk - Namespace auf ein Attribut setzen?

Ich möchte BizTalk-Schema, das ein XML-Element wie folgt aufbauen:

<role json:Array='true'>Admin</role> 

ich versucht, indem ein Schema zu meinem Projekt FakeJSONArraySchema.xsd genannt und dann auf meinem Hauptschema habe ich einen "Import" gemacht. Der normale Weg, um einen "Import" zu verwenden, besteht darin, einen "untergeordneten Datensatz" zu erstellen und dann seinen "Datenstrukturtyp" zu ändern. Stellt jedoch den "untergeordneten Datensatz" auf das Stammelement des referenzierten Schemas ein. Ich brauche nur ein Attribut.

Im obigen Beispiel muss das Element "role" im Namespace des Hauptschemas sein.

Wenn alles andere fehlschlägt, werde ich versuchen, die .XSD direkt zu bearbeiten. Ich hatte gehofft, dass dies mit der grafischen Benutzeroberfläche von Visual Studio möglich wäre.

Siehe ähnliche Frage: Details about the json:Array feature of Newtonsoft.JSON XML to JSON converter

+2

Ich bin ein wenig unklar, was Ihr zu tun versuchen, aber die Namespacing von Attributen zu zwingen Sie die attribute = „qualifiziert“ im Schema-Tag des XSD oder das Formular Attribut auf den Tag (das xsd muss auch einen Zielnamespace haben). – Sprotty

Antwort

1

Wie Sprotty in seinem Kommentar gesagt hat, setzen Sie das Attribut oder Formdefault das Attributfeld aus zu Qualified ein Namespacepräfix auf das Attribut zu erhalten.

Attribute FormDefault Attribute Field Form

Beispielschema mit Formdefault-Set.

<?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> 

aber es wird nicht das Namespacepräfix JSON, aber nur die Standard-NS0. Dies sollte jedoch hoffentlich keine Rolle spielen, solange es den richtigen Namespace referenziert.

<ns0:Root xmlns:ns0="http://james.newtonking.com/projects/json"> 
    <Role ns0:Array="true">Role_0</Role> 
</ns0:Root> 
Verwandte Themen