我正在将EDIFACT文件转换为OUIUBL文件(技术上只是一个XML文件),(基本上我正在创建一个XML文件),我想在我的标签中添加前缀,如“cac” :“ 例如。例如。
<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
我还尝试为startElement设置前缀和命名空间:
writer.WriteStartElement("cac", "Tax", Nothing)
但这些似乎都不起作用......设置前缀确实如此,但只有我还声明了命名空间,而我不想这样做。
我希望它像xml一样格式化,但忽略任何语法差异:)
答案 0 :(得分: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")
这不仅可以解决这个问题,而且也是你应该如何做到的,我一开始并没有意识到这一点。