【问题标题】:Help needed in XML SerializationXML 序列化所需的帮助
【发布时间】:2011-03-08 03:53:05
【问题描述】:

我正在尝试编写一个程序来将对象序列化为 xml 文件。

   [XmlRoot ("Person")]
    public class person
    {
        [XmlElement("Name")]
        public string name { get; set; }
        [XmlElement("Age")]
        public int age { get; set; }
        [XmlElement ("Location")]
        location _location = new location { city = "Delhi", country = "India", distance = 123 };
    }

这是我要序列化的对象的类。

我用来序列化的代码是

 person _person = new person { name = "ASDF", age = 25};
            System.Xml.Serialization.XmlSerializer XS = new System.Xml.Serialization.XmlSerializer(typeof(person));
            System.IO.TextWriter TW = new System.IO.StreamWriter(System.IO.File.Create("C:\\Users\\vaibhav.1.jain\\Documents\\Visual Studio 2010\\Projects\\LinqWeb\\LinqWeb\\xmlser\\ser4.xml"));
            XS.Serialize(TW, _person);
            TW.Close();

我得到的 XML 是

<?xml version="1.0" encoding="utf-8"?>
<Person xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Name>ASDF</Name>
  <Age>25</Age>
</Person>

但我应该得到

<?xml version="1.0" encoding="utf-8"?>
<Person xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Name>ASDF</Name>
  <Age>25</Age>
  <location>
    <country>India</country>
    <city>Delhi</city>
    <distance>12</distance>
  </location>
</Person>

你能告诉我我做错了什么吗,我是 XML 和序列化的新手。

【问题讨论】:

标签: c# .net xml xml-serialization


【解决方案1】:

您的 _location 字段似乎是私有的。 XML 序列化只会序列化公共属性和字段。尝试将其包装在公共属性中。

【讨论】:

  • 完美,但我不想让它 _location 成为公共领域。我们有其他选择吗?
  • 正如我所说,您可以将其包装在公共属性中。但无论如何,它必须是可公开访问的,XML 序列化才能使用它。
猜你喜欢
  • 2010-12-15
  • 2023-03-21
  • 2013-02-18
  • 1970-01-01
  • 2021-02-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多