使用 XMLSerialization 时尝试为父节点创建 xml 属性

Trying to create and xml attribute for a parent node while using XMLSerialization

我正在使用 .Net 中的 XML序列化 class 将对象序列化为 XML。在尝试为 XML 设置特定布局时,我正在努力弄清楚如何将属性添加到元素集合中的父节点(特别是下面的 ProgrammingLanguages 元素):

 <Devloper>
      <FirstName IsNew="true">John</FirstName>
      <LastName IsNew="true">Doe</LastName>
      <ProgrammingLanguages>
        <LanguageType isNew="true">VB</LanguageType>
        <LanguageType isNew="false">C#</LanguageType>
      </ProgrammingLanguages>
    </Devloper>

如果 FirstName 和 LastName 元素等数据没有层次结构,我可以向该元素添加属性 (IsNew),但如何向 ProgrammingLanguages 元素而不是 LanguageType 元素添加属性当使用的参数是列表时。

以上是我使用下面的代码得到的 XML 输出,但我希望结果如下。:

<Devloper>
  <FirstName IsNew="true">John</FirstName>
  <LastName IsNew="true">Doe</LastName>
  **<ProgrammingLanguages isNew="true">**
    <LanguageType>VB</LanguageType>
    <LanguageType>C#</LanguageType>
  </ProgrammingLanguages>
</Devloper>

我的代码:

Public Class Form1
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load

        Dim dev As New Devloper
        dev.FirstName.text = "John"
        dev.FirstName.IsNew = True

        dev.LastName.text = "Doe"
        dev.LastName.IsNew = True

        Dim l1 As New LanguageType
        l1.text = "VB"
        l1.isnew = True

        Dim l2 As New LanguageType
        l2.text = "C#"
        l2.isnew = False
        dev.ProgrammingLanguages.AddRange({l1, l2})

        dev.toXML()
    End Sub
End Class

<Serializable> Public Class Devloper
    Public Sub toXML()
        Dim mySerializer As XmlSerializer = New XmlSerializer(GetType(Devloper))
        Dim myWriter As StreamWriter = New StreamWriter("d:\myFileName.xml")
        mySerializer.Serialize(myWriter, Me)
        myWriter.Close()
    End Sub

    Public FirstName As New helperClass
    Public LastName As New helperClass
    Public ProgrammingLanguages As New List(Of LanguageType)
End Class

Public Class helperClass
    <XmlText> Public text As String
    <XmlAttribute> Public IsNew As Boolean
End Class

Public Class LanguageType
    <XmlText> Public text As String
    <XmlAttribute> Public isNew As Boolean
End Class

有什么想法吗?

我是用 C# 做的,我想它会对你有帮助 我在 xml 文件中得到的是:

<firstClass Name="ABC">
  <CustomerPhones Count="2">
    <phone Number="123" Address="Home" />
    <phone Number="456" Address="Work" />
  </CustomerPhones>
</firstClass>

我创建了这些 类:

public class firstClass
    {
        [XmlAttribute]
        public string Name { get; set; }

        public Phones CustomerPhones { get; set; }
    }
public class Phones
    {
        [XmlAttribute]
        public string Count { get; set; }
        [XmlElement("phone")]
        public List<Phone> phones { get; set; }
    }
public class Phone
    {
        [XmlAttribute]
        public string Number { get; set; }
        [XmlAttribute]
        public string Address { get; set; }
    }