使用 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; }
}
我正在使用 .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; }
}