C# C中的XmlElement#
我在C#中有一个简单的类,通过使用XmlSerializer类将其序列化为XMLC# C中的XmlElement#,c#,xmlserializer,C#,Xmlserializer,我在C#中有一个简单的类,通过使用XmlSerializer类将其序列化为XML [Serializable, XmlRoot("dc", Namespace= dc.NS_DC)] public class DCItem { // books?? [XmlElement("title")] public string Title { get; set; } } DCItem序列化很棒,因为代码现在已经设置好了(如上所示);但是,我想更改属性“Title”,使其包
[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>
乔家
执行此操作的最佳方法是什么?您可以定义一个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>
最简单的方法是创建一个包含title属性的books类
public class booksType
{
public string title {get;set;}
}
并将其用作主类中books属性的类型
public booksType books {get;set;}
我假设您希望在
下有几个
。那么这是一种方法:
[XmlType("title")]
public class Title
{
[XmlText]
public string Text { get; set; }
}
[XmlRoot("dc")]
public class DCItem
{
[XmlArray("books")]
public List<Title> Books { get; set; }
}
[XmlType(“标题”)]
公开课名称
{
[XmlText]
公共字符串文本{get;set;}
}
[XmlRoot(“dc”)]
公共类DCItem
{
[XmlArray(“书籍”)]
公共列表书籍{get;set;}
}
但是,您可能希望使用
元素,并将title作为属性或元素放在
上,因为XML序列化不需要可序列化的属性!我很困惑。。您只是想要一个列表
,其中书籍
具有标题
属性?而不是结构
。只需使用类
。谢谢!这正是我思考的方向,但我更好奇的是,我是否可以只是懒惰,而不必通过创建更多类的努力。
[XmlType("title")]
public class Title
{
[XmlText]
public string Text { get; set; }
}
[XmlRoot("dc")]
public class DCItem
{
[XmlArray("books")]
public List<Title> Books { get; set; }
}