【问题标题】:XML serialize in other format [closed]XML以其他格式序列化[关闭]
【发布时间】:2013-02-28 09:37:06
【问题描述】:

我有一个类Folders,需要把这个类序列化成指定的格式:

<?xml version="1.0" encoding="UTF-8"?>
<ListFolders  xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Folders>
<Id>Dir_1 </Id>
    <Folders>
        <Id>Dir_1_1 </Id>
    </Folders>
    <Folders>
        <Id>Dir_1_2 </Id>
        <Folders>
        <Id>Dir_1_2_1 </Id>
        </Folders>
        <Folders>
        <Id>Dir_1_2_2 </Id>
        </Folders>
    </Folders>
</Folders>
</ListFolders>

但是在序列化之后我得到了这个:

<?xml version="1.0" encoding="UTF-8"?>
    <ArrayOfFolders xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <Folders>
    <Id>Dir_1 </Id>
    <ListFolder>
        <Folders>
            <Id>Dir_1_1 </Id>
        </Folders>
        <Folders>
            <Id>Dir_1_2 </Id>
            <ListFolder>
                <Folders>
                    <Id>Dir_1_2_1 </Id>
                </Folders>
                <Folders>
                    <Id>Dir_1_2_2 </Id>
                </Folders>
            </ListFolder>
        </Folders>
    </ListFolder>
    </Folders>
    </ArrayOfFolders>

班级Folder:

public class Folders
{
    public string Id { get; set; }
    public List<Folders> ListFolder { get; set; }
}

如何以正确的格式序列化?

更新:

using (TextWriter reader = new StreamWriter("data.xml"))
{
    (new XmlSerializer(typeof(List<Folders>))).Serialize(reader, data);
}

【问题讨论】:

  • 1) 准确识别“哪一部分”不正确;和 2) 显示序列化它的代码。
  • @pst 已更新。这段代码不是我的。但我不明白如何把 XML 文件格式放在右边。

标签: c# .net xml xml-serialization


【解决方案1】:

XmlElement 属性添加到文件夹列表:

public class Folders
{
    public string Id { get; set; }
    [XmlElement("Folders")]
    public List<Folders> ListFolder { get; set; }
}

Folders对象的序列化结果将是

<?xml version="1.0"?>
<Folders xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
         xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Id>Dir_1</Id>
  <Folders>
    <Id>Dir_1_1</Id>
  </Folders>
  <Folders>
    <Id>Dir_1_2</Id>
    <Folders>
      <Id>Dir_1_2_1</Id>
    </Folders>
    <Folders>
      <Id>Dir_1_2_2</Id>
    </Folders>
  </Folders>
</Folders>

顺便说一句,Folders 是一个非常令人困惑的类名。 Folder 似乎更适合我。

【讨论】:

  • 关于类名。我同意你的看法 =)
猜你喜欢
  • 2010-11-28
  • 1970-01-01
  • 2013-03-13
  • 1970-01-01
  • 1970-01-01
  • 2021-01-23
  • 1970-01-01
  • 2013-12-04
  • 2012-12-26
相关资源
最近更新 更多