gpt4 book ai didi

c# - 将 xml 序列化为 C# 类时出错

转载 作者:数据小太阳 更新时间:2023-10-29 02:29:05 25 4
gpt4 key购买 nike

我正在尝试将 XML 文件序列化为 C# 对象,但出现以下错误:

There is an error in XML document (1, 64).

我复制 XML 文件并在 Visual Studio 中特殊粘贴为 xml

这是我的 XML:

<?xml version="1.0" encoding="Windows-1252" standalone="yes"?><root><record CodUnic="G15_455262_RO6739810_2016" CodStatie="G15" DocId="1" TipDoc="Gastro" NrDoc="455262" DataDoc="2016-01-21" DataIntr="2016-01-21" NrIntr="0" Retur="0" DataAnulare="" CodFurnizor="RO6739810" DenFurnizor="SC IFANTIS GGG SRL" ValoareFaraTVA="171.91" ValoareTVA="15.47" /></root>

这是我生成的“特殊类”:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace XMLCheckTool.Clase
{

/// <remarks/>
[System.SerializableAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]
[System.Xml.Serialization.XmlRootAttribute(Namespace = "", IsNullable = false)]
public partial class IntrCap
{

private rootRecord recordField;

/// <remarks/>
public rootRecord record
{
get
{
return this.recordField;
}
set
{
this.recordField = value;
}
}
}

/// <remarks/>
[System.SerializableAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]
public partial class rootRecord
{

private string codUnicField;

private string codStatieField;

private int docIdField;

private string tipDocField;

private uint nrDocField;

private System.DateTime dataDocField;

private System.DateTime dataIntrField;

private int nrIntrField;

private int returField;

private string dataAnulareField;

private string codFurnizorField;

private string denFurnizorField;

private decimal valoareFaraTVAField;

private decimal valoareTVAField;

/// <remarks/>
[System.Xml.Serialization.XmlAttributeAttribute()]
public string CodUnic
{
get
{
return this.codUnicField;
}
set
{
this.codUnicField = value;
}
}

/// <remarks/>
[System.Xml.Serialization.XmlAttributeAttribute()]
public string CodStatie
{
get
{
return this.codStatieField;
}
set
{
this.codStatieField = value;
}
}

/// <remarks/>
[System.Xml.Serialization.XmlAttributeAttribute()]
public int DocId
{
get
{
return this.docIdField;
}
set
{
this.docIdField = value;
}
}

/// <remarks/>
[System.Xml.Serialization.XmlAttributeAttribute()]
public string TipDoc
{
get
{
return this.tipDocField;
}
set
{
this.tipDocField = value;
}
}

/// <remarks/>
[System.Xml.Serialization.XmlAttributeAttribute()]
public uint NrDoc
{
get
{
return this.nrDocField;
}
set
{
this.nrDocField = value;
}
}

/// <remarks/>
[System.Xml.Serialization.XmlAttributeAttribute(DataType = "date")]
public System.DateTime DataDoc
{
get
{
return this.dataDocField;
}
set
{
this.dataDocField = value;
}
}

/// <remarks/>
[System.Xml.Serialization.XmlAttributeAttribute(DataType = "date")]
public System.DateTime DataIntr
{
get
{
return this.dataIntrField;
}
set
{
this.dataIntrField = value;
}
}

/// <remarks/>
[System.Xml.Serialization.XmlAttributeAttribute()]
public int NrIntr
{
get
{
return this.nrIntrField;
}
set
{
this.nrIntrField = value;
}
}

/// <remarks/>
[System.Xml.Serialization.XmlAttributeAttribute()]
public int Retur
{
get
{
return this.returField;
}
set
{
this.returField = value;
}
}

/// <remarks/>
[System.Xml.Serialization.XmlAttributeAttribute()]
public string DataAnulare
{
get
{
return this.dataAnulareField;
}
set
{
this.dataAnulareField = value;
}
}

/// <remarks/>
[System.Xml.Serialization.XmlAttributeAttribute()]
public string CodFurnizor
{
get
{
return this.codFurnizorField;
}
set
{
this.codFurnizorField = value;
}
}

/// <remarks/>
[System.Xml.Serialization.XmlAttributeAttribute()]
public string DenFurnizor
{
get
{
return this.denFurnizorField;
}
set
{
this.denFurnizorField = value;
}
}

/// <remarks/>
[System.Xml.Serialization.XmlAttributeAttribute()]
public decimal ValoareFaraTVA
{
get
{
return this.valoareFaraTVAField;
}
set
{
this.valoareFaraTVAField = value;
}
}

/// <remarks/>
[System.Xml.Serialization.XmlAttributeAttribute()]
public decimal ValoareTVA
{
get
{
return this.valoareTVAField;
}
set
{
this.valoareTVAField = value;
}
}
}


}

这是我将 xml 放入对象的方法:

 public static void fileCapIntr(string xmlFile) {
XmlSerializer serializer = new XmlSerializer(typeof(IntrCap));
IntrCap i;
using (Stream reader = new FileStream(xmlFile, FileMode.Open))
{
// Call the Deserialize method to restore the object's state.
i = (IntrCap)serializer.Deserialize(reader);
}


}

有什么帮助吗?非常感谢!

最佳答案

你的错误

There is an error in XML document (1, 64).

有一个 InnerException 内容如下:

<root xmlns=''> was not expected.

简单修复:指定根的 ElementName:

[System.Xml.Serialization.XmlRootAttribute(
Namespace = "",
IsNullable = false,
ElementName = "root"
)]

或者在创建序列化器的时候指定

XmlSerializer serializer = new XmlSerializer(
typeof(IntrCap),
null,
null,
new XmlRootAttribute("root"),
""
);

Proof as dotNetFiddle

关于c# - 将 xml 序列化为 C# 类时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37429674/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com