<classname xmlns =“http:// uri”>不是预期的</classname>

时间:2011-03-03 18:29:54

标签: c# xml xml-serialization

我刚刚使用xsd.exe生成了一个类(请参阅previous question),然后我尝试使用它来反序列化我的XML文件。

我的XML文件是这样开始的:

<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type='text/xsl' href='STIG_unclass.xsl'?>
<Benchmark xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:cpe="http://cpe.mitre.org/language/2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" id="Windows_2003" xml:lang="en" xsi:schemaLocation="http://checklists.nist.gov/xccdf/1.1 http://nvd.nist.gov/schema/xccdf-1.1.4.xsd http://cpe.mitre.org/dictionary/2.0 http://cpe.mitre.org/files/cpe-dictionary_2.1.xsd" xmlns="http://checklists.nist.gov/xccdf/1.1">

并且xsd.exe生成的类开头如下:

    /// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "2.0.50727.3038")]
[System.SerializableAttribute()]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true, Namespace = "http://checklists.nist.gov/xccdf/1.1")]
[System.Xml.Serialization.XmlRootAttribute(Namespace = "http://checklists.nist.gov/xccdf/1.1", IsNullable = false)]
public partial class Benchmark

但是当我尝试反序列化我的XML文件时,使用以下代码:

var groups = new List<Benchmark>();
XmlSerializer serializer = new XmlSerializer(typeof(List<Benchmark>));
using (TextReader textReader = new StreamReader(open.FileName))
    groups = (List<Benchmark>)serializer.Deserialize(textReader);  // ERROR HERE

SetGroups(groups);

我收到一条错误消息“XML文档中存在错误(3,2)。”内部异常说:“http://checklists.nist.gov/xccdf/1.1'>不是预期的。”

我做错了什么?

1 个答案:

答案 0 :(得分:2)

Dang,我想通了......

我将对象序列化为List<Benchmark>而非Benchmark ....改变了这一切,一切都已修复!