需要帮助创建具有特殊字符数据的xml属性

时间:2017-10-10 17:28:05

标签: xml vb.net

所以我在VB.net中有一个应用程序(VS2017,如果这很重要),它生成一个xml文档以将数据提供给另一个应用程序。必须使用的xml文档在某些部分后需要以下行:

<format position="11" type="text" text="&#13;&#10;"/>

所以当我追加text属性时,我想这样做:

element.SetAttribute("text","&#13;&#10;")

返回我需要的数据。但是,当然,他们不断将放大器投入混音。我尝试使用&amp;来代替&amp;,但这只会产生一个双放大器; amp;无处不在。

我尝试使用CData,但它包含了CData标记,但没有提供我需要追加的确切属性。

如何让&#13;&#10;显示为属性值?

1 个答案:

答案 0 :(得分:0)

我回答了其中一个yesterday,但您有一个具体问题。如果您使用xml序列化进行写入和阅读,那么这不是问题。

基于xml生成一个类。您可以复制xml的示例并执行编辑&gt;&gt;将xml粘贴为visual studio中的类。根据您的有限示例,

Partial Public Class format

    <System.Xml.Serialization.XmlAttribute()>
    Public Property position() As Byte

    <System.Xml.Serialization.XmlAttribute()>
    Public Property type() As String

    <System.Xml.Serialization.XmlAttribute()>
    Public Property text() As String

End Class

现在,您可以使用一个类来保存信息,而不是考虑以xml为中心。您可以在文件中对类进行序列化和反序列化:

Sub Main()
    Dim x As New format() With ' format object to write to xml
    {
        .position = 11,
        .type = "text",
        .text = "&#13;&#10;"
    }
    Dim s As New Xml.Serialization.XmlSerializer(GetType(format))
    Using f As New IO.FileStream("format.xml", IO.FileMode.OpenOrCreate)
        s.Serialize(f, x)
    End Using
    Dim y As format ' format object to read from xml
    Using f As New IO.FileStream("format.xml", IO.FileMode.Open)
        y = s.Deserialize(f)
    End Using
    Console.WriteLine(y.text) ' value of y.text = "&#13;&#10;"
End Sub

&amp并没有错;它是如何在xml中表示&。它将使用序列化器正确写入和读取。

程序输出正确的值,尽管这是文件中的xml

<?xml version="1.0"?>
<format xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
        xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
        position="11" type="text" text="&amp;#13;&amp;#10;" />