摆脱< ArrayOfClassname>序列化阵列时,根元素 [英] Get rid of <ArrayOfClassname> root element when serializing array

查看:137
本文介绍了摆脱< ArrayOfClassname>序列化阵列时,根元素的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

下面是一个code例如:

Here's a code example:

public class Person
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
}

...

static void Main() 
{
    Person[] persons = new Person[] 
    {
        new Person{ FirstName = "John", LastName = "Smith"},
        new Person{ FirstName = "Mark", LastName = "Jones"},
        new Person{ FirstName= "Alex", LastName="Hackman"}
    };

    XmlSerializer xs = new XmlSerializer(typeof(Person[]), "");

    using (FileStream stream = File.Create("persons-" + Guid.NewGuid().ToString().Substring(0, 4) + ".xml")) 
    {
        xs.Serialize(stream, persons);
    }
}

下面是输出:

<?xml version="1.0"?>
<ArrayOfPerson xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Person>
    <FirstName>John</FirstName>
    <LastName>Smith</LastName>
  </Person>
  <Person>
    <FirstName>Mark</FirstName>
    <LastName>Jones</LastName>
  </Person>
  <Person>
    <FirstName>Alex</FirstName>
    <LastName>Hackman</LastName>
  </Person>
</ArrayOfPerson>

下面是一个问题。如何摆脱根元素和渲染,就像这样的人:

Here's a question. How to get rid of root element and render persons just like this:

<?xml version="1.0"?>
<Person>
  <FirstName>John</FirstName>
  <LastName>Smith</LastName>
</Person>
<Person>
  <FirstName>Mark</FirstName>
  <LastName>Jones</LastName>
</Person>
<Person>
  <FirstName>Alex</FirstName>
  <LastName>Hackman</LastName>
</Person>

谢谢!

推荐答案

这是一个畸形的 XML 你想要的,不可能通过 XmlSerializer的获得它,但你可以改变 ArrayOfPersno 元素的名称smothing其他:

That's a malformed XML you want, not possible to obtain it via XmlSerializer, but you can change ArrayOfPersno element name to smothing else:

例如:

XmlSerializer xs = new XmlSerializer(typeof(Person[]),
                                     new XmlRootAttribute("Persons"));

会给你:

<?xml version="1.0"?>
<Persons xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Person>
    <FirstName>John</FirstName>
    <LastName>Smith</LastName>
  </Person>
  ...

这篇关于摆脱&LT; ArrayOfClassname&GT;序列化阵列时,根元素的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆