我在C#中有一个简单的类,我已经设置了使用XmlSerializer类序列化为XML。
[Serializable, XmlRoot("dc", Namespace= dc.NS_DC)]
public class DCItem {
// books??
[XmlElement("title")]
public string Title { get; set; }
}
DCItem序列化很好,因为代码现在正在设置(如上所示);但是,我想更改属性“Title”,以便它包含在“Books”节点中。例如:
<dc>
<books>
<title>Joe's Place</title>
</books>
</dc>
这样做最好的方法是什么?
答案 0 :(得分:5)
您可以定义Books类:
public class Books
{
[XmlElement("title")]
public string Title { get; set; }
}
然后:
[XmlRoot("dc", Namespace= dc.NS_DC)]
public class DCItem
{
[XmlElement("books")]
public Books Books { get; set; }
}
另请注意,我已经摆脱了二进制序列化程序使用的Serializable属性,并被XmlSerializer类完全忽略。
现在因为我怀疑你可以拥有多本书:
<dc>
<books>
<title>Joe's Place</title>
<title>second book</title>
<title>third book</title>
</books>
</dc>
您可以调整对象模型以匹配此结构:
[XmlRoot("dc", Namespace= dc.NS_DC)]
public class DCItem
{
[XmlElement("books")]
public Books Books { get; set; }
}
public class Books
{
[XmlElement("title")]
public Book[] Items { get; set; }
}
public class Book
{
[XmlText]
public string Title { get; set; }
}
答案 1 :(得分:3)
我假设您需要<title>
下的多个<books>
。然后这是一种方法:
[XmlType("title")]
public class Title
{
[XmlText]
public string Text { get; set; }
}
[XmlRoot("dc")]
public class DCItem
{
[XmlArray("books")]
public List<Title> Books { get; set; }
}
您可能希望使用<book>
元素,并将标题作为属性或元素放在<book>
上。
答案 2 :(得分:1)
最简单的方法是制作包含标题属性的图书类。
public class booksType
{
public string title {get;set;}
}
用作主类中书籍属性的类型。
public booksType books {get;set;}