2016-05-11 13 views
0

Ich konvertiere eine EDIFACT-Datei in eine OUIUBL-Datei (technisch nur eine XML-Datei), (im Wesentlichen erstellen ich eine XML-Datei) und ich möchte Präfixe in meine Tags haben wie "cac:" zum Beispiel. Z.B.Forcieren XmlWriter zu verwenden 'ungültige' Zeichen

<cac:Tax> 
    <cbc:Amount>500.00</cbc:Amount> 
</cac:Tax> 

ich einen XmlWriter bin mit dem xml zu erstellen, tut es im Wesentlichen wie folgt:

writer.WriteStartDocument() 
writer.WriteStartElement("cac:Tax") 
writer.WriteElementString("Amount", "500.00") 
writer.WriteEndElement() 
writer.WriteStartDocument() 

Aber ich einen Fehler erhalten, dass „:“ ein ungültiges Zeichen ist. Wie zwinge ich es dazu, es trotzdem zu benutzen? Ich habe versucht, die folgenden

Dim settings As XmlWriterSettings = New XmlWriterSettings() 
settings.Indent = True 
settings.CheckCharacters = false 

Und ich habe auch versucht, einen Präfix und Namespace für das Startelement Einstellung:

writer.WriteStartElement("cac", "Tax", Nothing) 

Aber keiner von denen schien ... Nun zu arbeiten Einstellung das Präfix tat, aber nur wenn ich auch einen Namespace deklariere, und das will ich nicht.

Ich will es es wie xml zu formatieren, aber zu vernachlässigen syntaktischen Unterschiede :)

+0

Werfen Sie einen Blick auf diese https://msdn.microsoft.com/en-us/library/aa302296.aspx Oder http://www.w3schools.com/xml/xml_schema.asp „cac: "ist das Schema. – Malcor

+2

@Malcor: Technisch cac: ist NICHT das Schema, sondern das Namespace-Präfix, das ein Schema erben könnte. – JaggenSWE

+1

@JaggenSWE Sie sind völlig richtig. – Malcor

Antwort

2

Dank @Malcor und @JaggenSWE fand ich heraus, dass ich die Namespaces

writer.WriteAttributeString("xmlns","cbc", Nothing,"urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2") 
writer.WriteAttributeString("xmlns","cac", Nothing,"urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2") 

nicht nur zu erklären, hatte tat das macht den Trick, es ist auch genau wie du es tun sollst, ich habe es zuerst nicht bemerkt.