【问题标题】:there is an error in xml document (2 2) xmlns='' was not expectedxml 文档中存在错误 (2 2) xmlns='' 不是预期的
【发布时间】:2015-05-07 08:35:56
【问题描述】:

我得到的错误是stackoverflow一次又一次地回答,我尝试了代码中的一些更改,但无法删除错误。这是我用于序列化和反序列化的类。请看一下。

我不懂 XMLroot、XML 元素和命名空间等术语。所以请相应地回答,比如我应该给出什么命名空间,XML 根可能是什么。

如果你能编辑它,那就太好了:

namespace tudumo9
{

  public class data
  {
    public string project_name;
    public string note_text;
    public string tag_text;
    public DateTime start_date;
    public DateTime due_date;
    public string action;

    public  data(){}

  }
}

我的 XML:

<?xml version="1.0"?>
<ArrayOfData xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
             xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <data>
    <project_name>p1</project_name>
    <tag_text>tagged</tag_text>
    <start_date>0001-01-01T00:00:00</start_date>
    <due_date>0001-01-01T00:00:00</due_date>
    <action>Action</action>
  </data>
</ArrayOfData>

【问题讨论】:

  • 这就是它的样子
  • 请检查xml
  • 我试过这个东西
  • [Serializable,XmlRoot(ElementName="data",Namespace="w3.org/2001/XMLSchema-instance/")]
  • 如果我只序列化一个对象,我可以反序列化,但是当我使用 List 进行反序列化时,会出现此错误

标签: c# xml linq serialization xml-deserialization


【解决方案1】:

试试这个

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Xml;
using System.Xml.Serialization;


namespace ConsoleApplication25
{
    class Program
    {
        const string FILENAME = @"c:\temp\test.xml";
        static void Main(string[] args)
        {
            XmlSerializer xs = new XmlSerializer(typeof(ArrayOfData));
            XmlTextReader reader = new XmlTextReader(FILENAME);
            ArrayOfData newArrayOfData = (ArrayOfData)xs.Deserialize(reader);

        }

    }
    [XmlRoot("ArrayOfData")]
    public class ArrayOfData
    {
        [XmlElement("data")]
        public List<data> c_Data { get; set; }
    }

    [XmlRoot("data")]
    public class data
    {
        [XmlElement("project_name")]
        public string project_name { get; set; }
        [XmlElement("note_text")]
        public string note_text { get; set; }
        [XmlElement("tag_text")]
        public string tag_text { get; set; }
        [XmlElement("start_date")]
        public DateTime start_date { get; set; }
        [XmlElement("due_date")]
        public DateTime due_date { get; set; }
        [XmlElement("action")]
        public string action { get; set; }
    }
}

【讨论】:

  • 如何将类 ArrayofData 与类数据的列表成员一起使用与我仅使用类数据列表的方法不同
  • 这是我玩的反序列化函数
  • public static ArrayOfData load(string filename) { using (var stream = new FileStream(filename, FileMode.Open)) { var xml = new XmlSerializer(typeof(data));返回(ArrayOfData)xml.Deserialize(流); } }
  • private void Form1_Load(object sender, EventArgs e) { all_data = load("data.xml"); }
猜你喜欢
相关资源
最近更新 更多
热门标签