往返XML - > XSD - >上课不起作用?

时间:2013-02-21 02:38:12

标签: xml c#-4.0 xsd deserialization

我已尝试(并且失败)执行以下操作。

  1. 创建示例XML文件。

    <?xml version="1.0" encoding="utf-8"?> <test1> <test2>Test3</test2> </test1>

  2. 通过Visual Studio 2010的xsd运行它以生成XSD文件。

    xsd test.xml

  3. 将XSD文件添加到Visual Studio 2010中的C#项目。这会添加文件:

    • test.Designer.cs
    • test.xsc
    • test.xss

    并显示在设计器视图中,如下所示。

    enter image description here

  4. 然后我尝试反序列化启动整个文件的文件:

  5. var reader = new FileStream("xml/test.xml", FileMode.Open);
    var serializer = new System.Xml.Serialization.XmlSerializer(typeof(NewDataSet)); var test = serializer.Deserialize(reader);

    我收到了错误

    enter image description here

    内部异常显示{"<test1 xmlns=''> was not expected."}

    我做错了什么?或者我应该使用xsd来生成课程吗?

2 个答案:

答案 0 :(得分:1)

您应该将文件作为字节打开,然后将它们排队到MemoryStream中。然后你可以从MemoryStream中反序列化。

要查看的类型/方法是:

如果您需要更多指示,我可以发布代码示例。

答案 1 :(得分:0)

好吧,好像就是这样:

xsd test.xsd /c

使用此作为类型生成test.cs,而不是NewData正确反序列化。