C# 序列化产生错误格式的xml

C# 序列化产生错误格式的xml,c#,xml-serialization,linq-to-xml,C#,Xml Serialization,Linq To Xml,我正在将对象列表序列化为xml。我得到了很大的帮助 经过一些定制,我得到了这个代码 private void button1_Click(object sender, EventArgs e) { PersonalList personen = new PersonalList(); // normal person Person normPerson = new Person();

我正在将对象列表序列化为xml。我得到了很大的帮助

经过一些定制,我得到了这个代码

     private void button1_Click(object sender, EventArgs e)
        {
             PersonalList personen = new PersonalList(); 
            // normal person
            Person normPerson = new Person();
            normPerson.Location = "Pune";
            normPerson.ChangeFrequency = "weekly";
            normPerson.LastModifiedDate = "2014-07-12";
            personen.AddPerson(normPerson);
            Type[] personTypes = { typeof(Person)};
            XmlSerializer serializer = new XmlSerializer(typeof(PersonalList), personTypes); 
            FileStream fs = new FileStream("myxml.xml", FileMode.Create); 
            serializer.Serialize(fs, personen); 
            fs.Close(); 
            personen = null;

            // Deserialize 

        }
    }

[XmlRoot("urlset")]
[XmlInclude(typeof(Person))] // include type class Person
public class PersonalList
{
    [XmlArray("url")]
    [XmlArrayItem("url")]
    public List<Person> Persons = new List<Person>();

    public void AddPerson(Person person)
    {
        Persons.Add(person);
    }
}

[XmlType("Person")] // define Type
public class Person
{

    [XmlElement("loc")]
    public string Location { get; set; }


    [XmlElement("changefreq")]
    public string ChangeFrequency { get; set; }

    [XmlElement("lastmod")]
    public string LastModifiedDate { get; set; }


}
private void按钮1\u单击(对象发送者,事件参数e)
{
PersonalList personen=新建PersonalList();
//正常人
Person normPerson=新的Person();
normPerson.Location=“浦那”;
normPerson.ChangeFrequency=“每周”;
normPerson.LastModifiedDate=“2014-07-12”;
personen.AddPerson(normPerson);
Type[]personTypes={typeof(Person)};
XmlSerializer serializer=新的XmlSerializer(typeof(PersonalList),personTypes);
FileStream fs=newfilestream(“myxml.xml”,FileMode.Create);
serializer.Serialize(fs,personen);
fs.Close();
personen=null;
//反序列化
}
}
[XmlRoot(“urlset”)]
[xmlclude(typeof(Person))]//包含类型类Person
公开课个人名单
{
[XmlArray(“url”)]
[XmlArrayItem(“url”)]
公开名单人员=新名单();
公众人士(人)
{
人。添加(人);
}
}
[XmlType(“Person”)]//定义类型
公共阶层人士
{
[XmlElement(“loc”)]
公共字符串位置{get;set;}
[XmlElement(“changefreq”)]
公共字符串更改频率{get;set;}
[XmlElement(“lastmod”)]
公共字符串LastModifiedDate{get;set;}
}
这是产生结果的原因

<urlset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<url>
<url>
<loc>Pune</loc>
<changefreq>weekly</changefreq>
<lastmod>2014-07-12</lastmod>
</url>
</url>
</urlset>

浦那
每周的
2014-07-12
但我想要的结果是

<urlset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <url>
    <loc>Pune</loc>
    <changefreq>weekly</changefreq>
    <lastmod>2014-07-12</lastmod>
    </url>

    </urlset>

浦那
每周的
2014-07-12
我不想要ArrayList的额外元素

我还需要在根元素上有这个名称空间,即我为根元素定义的名称空间

<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd">


有什么帮助吗?

通过此链接获得答案。是否有向根目录添加名称空间的解决方案?已尝试:
[XmlRoot(名称空间=”http://foo”)
谢谢它的工作,但我如何将xmlns:xsi=“”xsi:schemaLocation=“”添加到roots中StackOverflow的最佳用法是添加一个新问题。根节点上的名称空间覆盖等文档可在此处找到,并附有一个示例: