c# - C# 中的 XmlElement

标签 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”,使其包含在“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; }
}

另请注意,我已经摆脱了由二进制序列化程序使用并被 XmlSerializer 类完全忽略的 Serializable 属性。

既然我怀疑你可能有多本书:

<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; }
}

关于c# - C# 中的 XmlElement,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14347635/

相关文章:

c# - 不正确的 Lambda 表达式缩进

c# - 如何使用 XmlSerializer 反序列化具有多个 xmlns 属性的 XML

wcf - 强制 WCF 在反序列化期间使用现有缓冲区?

c# - 序列化没有额外元素的列表

maven-2 - axis2 Maven 示例

c# - xml中的额外右括号

c# - 您如何获得 IsolatedStorage 中所有文件的平面列表?

c# - 在 ASP.NET 代码隐藏中声明一个全局变量

c# - 为什么使用 ttinclude 而不是编译的程序集?

c# - 在数据表中查找重复项然后比较重复项