2016-05-11 48 views
0

我正在將EDIFACT文件轉換爲OUIUBL文件(技術上只是一個XML文件),(本質上是我創建一個XML文件),我希望在我的標籤中有前綴比如「cac:」。例如。強制XmlWriter使用'無效'字符

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

我使用的XmlWriter創建XML,基本上做它像這樣:

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

但我得到一個錯誤說「:」是無效字符。我如何強制它使用它呢?我曾嘗試以下

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

而且我也試着設置一個前綴和命名空間爲起始元素:

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

但無論是那些似乎工作......好吧設置前綴一樣,但只有當我還聲明一個命名空間時,我不想那樣做。

我希望它格式化,如XML,但忽略任何語法上的不同:)

+0

看看這個https://msdn.microsoft.com/en-us/library/aa302296.aspx 或者http://www.w3schools.com/xml/xml_schema.asp 「CAC: 「是架構。 – Malcor

+2

@Malcor:技術上cac:不是模式,而是可能繼承模式的名稱空間前綴。 – JaggenSWE

+1

@JaggenSWE你完全正確。 – Malcor

回答

2

感謝@Malcor和@JaggenSWE我發現我不得不宣佈該命名空間

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") 

不僅沒有這是做的伎倆,它也正是你應該這樣做,我剛開始並沒有意識到。