XmlTextWriter:空白问题

XmlTextWriter: Problems with WhiteSpace

实际上我正在尝试使用 xmltextwriter 创建 xml,但我遇到了一些问题。

这就是我所做的

Dim writer As New XmlTextWriter("FactElec.xml", System.Text.Encoding.UTF8)
    writer.WriteStartDocument(False)
    writer.Formatting = Formatting.Indented
    writer.Indentation = 2
    writer.WriteStartElement("Invoice")

    writer.WriteStartElement("sac:AdditionalMonetaryTotal")
    writer.WriteElementString("cbc:id", "1001")
    writer.WriteWhitespace("/n")
    writer.WriteRaw("<cbc:PayableAmount currencyID=""PEN"">" + TotGrav + 
    "</cbc:PayableAmount>/n")
    writer.WriteEndElement()
    writer.WriteEndDocument()
    writer.Flush()
    writer.Close()

问题是我在 writer.WriteWhitespace 中遇到错误,说它需要为空白,但我需要下一行出现下一个 WriteRaw。刚才它出现在 cbc:id

旁边

谢谢,对不起,如果我不能解释得更好。

更新:或者,以防万一,如果您知道如何在不使用 WriteRaw 的情况下在 cbc:PayableAmount 中添加 currencyID=""PEN"",可能会更好,因为这就是让我遇到所有这些问题

您可以使用 XML Literals 以更简洁的方式创建 xml 文件。

Imports <xmlns:sac="http://yoursacnamespace">
Imports <xmlns:cbc="http://yourcbcnamespace">

Public Module XmlInvoiceHelper
    Public Sub SaveWithValue(totGrav As Integer)
        Dim xml As XElement =
        <Invoice>
            <sac:AdditionalMonetaryTotal>
                <cbc:id>1001</cbc:id>
                <cbc:PayableAmount currencyID="PEN"><%= totGrav %></cbc:PayableAmount>
            </sac:AdditionalMonetaryTotal>
        </Invoice>

        Using  writer As New XmlTextWriter("YourFile.xml", Encoding.UTF8)
            xml.Save(writer);
        End Using
    End Function
End Module

对于命名空间 saccbc,您需要在代码文件的开头添加 Imports 行以支持它们用于 Xml 文字代码。