C# XML文档中存在错误(1,1)
我一直在尝试从XML中读取数据。当我尝试对其进行反序列化时,会出现以下错误: XML文档(1,1)中有错误 为了供您参考,我附上了我的全部代码以及我的xml文件 C#代码:C# XML文档中存在错误(1,1),c#,xml,C#,Xml,我一直在尝试从XML中读取数据。当我尝试对其进行反序列化时,会出现以下错误: XML文档(1,1)中有错误 为了供您参考,我附上了我的全部代码以及我的xml文件 C#代码: CarCollection cars = null; string path = @"C:\Users\harsha\Desktop\Doc.xml"; XmlSerializer serializer = new XmlSerializer(typeof(CarCollection)); var reader = XmlR
CarCollection cars = null;
string path = @"C:\Users\harsha\Desktop\Doc.xml";
XmlSerializer serializer = new XmlSerializer(typeof(CarCollection));
var reader = XmlReader.Create(path);
cars = (CarCollection)serializer.Deserialize(reader);
reader.Close();
<CarCollection>
<Cars>
<Car>
<StockNumber>1020</StockNumber>
<Make>Nissan</Make>
<Model>Sentra</Model>
</Car>
<Car>
<StockNumber>1010</StockNumber>
<Make>Toyota</Make>
<Model>Corolla</Model>
</Car>
<Car>
<StockNumber>1111</StockNumber>
<Make>Honda</Make>
<Model>Accord</Model>
</Car>
</Cars>
</CarCollection>
此外,数据结构如下所示:
namespace XMLDataReader
{
[Serializable()]
public class Car
{
[System.Xml.Serialization.XmlElement("StockNumber")]
public string StockNumber { get; set; }
[System.Xml.Serialization.XmlElement("Make")]
public string Make { get; set; }
[System.Xml.Serialization.XmlElement("Model")]
public string Model { get; set; }
}
[Serializable()]
[System.Xml.Serialization.XmlRoot("CarCollection")]
public class CarCollection
{
[XmlArray("Cars")]
[XmlArrayItem("Car", typeof(Car))]
public Car[] Car { get; set; }
}
XML文件:
CarCollection cars = null;
string path = @"C:\Users\harsha\Desktop\Doc.xml";
XmlSerializer serializer = new XmlSerializer(typeof(CarCollection));
var reader = XmlReader.Create(path);
cars = (CarCollection)serializer.Deserialize(reader);
reader.Close();
<CarCollection>
<Cars>
<Car>
<StockNumber>1020</StockNumber>
<Make>Nissan</Make>
<Model>Sentra</Model>
</Car>
<Car>
<StockNumber>1010</StockNumber>
<Make>Toyota</Make>
<Model>Corolla</Model>
</Car>
<Car>
<StockNumber>1111</StockNumber>
<Make>Honda</Make>
<Model>Accord</Model>
</Car>
</Cars>
</CarCollection>
1020
日产
森特拉
1010
丰田
花冠
1111
本田
一致
等待帮助。提前谢谢 你能用记事本打开它并验证内容是否符合你的要求吗?如果出现以下情况,您将看到该错误:
- 文件中没有任何内容
- 文件中的xml无效或格式不正确
- xml的架构与指定的架构不同
<?xml version="1.0" encoding="UTF-8" ?>
请参见您的代码工作正常(有XML声明和没有XML声明),问题很可能是XML文件的内容。我猜编码被破坏了,或者有一些隐藏的特殊字符看起来像普通字符,但却是其他字符(例如<符号)
在我的例子中,不知何故,序列化程序中有一个bug。我不确定是图书馆还是逻辑 要检查您是否有与我相同的案例:
- 从数据库列复制XML
- 打开记事本
- 将xml粘贴到记事本中
- 拯救
private static string Validate(string xml)
{
if (string.IsNullOrEmpty(xml))
return xml;
try
{
var index = xml.IndexOf('<');
if (index > 0)
xml = xml.Substring(index);
}
catch { }
return xml;
}
私有静态字符串验证(字符串xml)
{
if(string.IsNullOrEmpty(xml))
返回xml;
尝试
{
var index=xml.IndexOf('是否需要标准的xml前缀(
)?嗨,Steve,我添加了一行:,但我仍然得到了相同的错误。你能建议其他的吗?如果序列化中有些东西不起作用,那么尝试同样的操作:创建你的对象,序列化到文件,看看你得到了什么。你能提供更多的异常输出吗?我确信XmlSerializer提供了更多的信息关于原因,可能在内部例外请您的问题分享完整的ToString()
异常的输出,包括异常类型、消息、回溯和内部异常(如果有)。我刚刚添加了上面的行,但仍然面临相同的错误。您现在有什么建议?您的进程是否具有写入路径的读/写权限?您能在Internet Explorer中打开该文件吗?IE具有内置的验证机制m这有时会有帮助。嗨,戴夫,我试着用IE打开它,但我看不到那里的内容?我怎样才能让IE访问它呢?我想,如果IE能看到内容,我的代码也会自动运行,对吗?就这样。文件已损坏(或与预期不同)。序列化引擎无法理解文档中的结构。您所说的“完全不同”是什么意思?可能这就是“损坏”的意思.XML不是某种特殊的格式,应该可以在普通记事本中正确查看。我使用记事本+++“原样”复制并保存了您的示例XML。我也可以复制此结果。代码已按提供的格式成功反序列化。嗨,李,非常感谢您的回复。我有另一个格式正确的XML文件,IE也可以查看。但是,现在,我得到了一个错误“XML文档(1,2)中有一个错误。”这种情况的原因是什么?我不明白。这是我的工作示例项目