对象的Xml文件(反序列化)错误2,2 [英] Xml file to object (deserialization) error 2, 2

查看:100
本文介绍了对象的Xml文件(反序列化)错误2,2的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想从XML文件中读取服务器列表中的服务器

它显示错误xml文档中的错误(2,2)

和我不知道如何解决它,如果xml文件systax有错误?





我的源代码:

 XmlSerializer serializer =  new  XmlSerializer( typeof (Server)); 
FileStream loadStream = new
FileStream( @ C:\ Users \dominik.scholz\Desktop\Settings.xml
FileMode.Open,FileAccess.Read);
设置loadedObject =(设置)serializer.Deserialize(loadStream);
loadStream.Close();





我的班级名为Serverliste

 [XmlRoot( 设置),Serializable] 
public class 设置
{
[XmlElement( Serverliste)]
public Serverliste Serverliste {获得; set ; }
}

public class Serverliste
{
[XmlElement( Server)]
public List< Server>服务器{获取; set ; }
}

public class 服务器
{
[XmlAttribute( 名称)]
public string 名称{ get ; set ; }

[XmlAttribute( 主持人)]
< span class =code-keyword> public
string 主机{ get ; set ; }

[XmlElement( Port)]
< span class =code-keyword> public int 端口{ get ; set ; }

[XmlElement( Aktiv)]
< span class =code-keyword> public bool Aktiv { get ; set ; }
}







和我的XML文件

 <?  xml     version   =  1.0  >  
< 设置 >
< Serverliste >
< 服务器 >
< span class =code-keyword>< 名称 serializeAs = 字符串 >
< value > Server1 < / value >
< / Name >
< 主机 serializeAs = String >
< > 127.0.0.1 < / value >
< /主机 >
< span class =code-keyword>< 端口 serializeAs = 字符串 >
< value > 10 < / value >
< / Port >
< ; Aktiv serializeAs < span class =code-keyword> = boolean >
< value > true < span class =code-keyword>< / value >
< / Aktiv >
< / Server >
< 服务器 >
< 名称 serializeAs = 字符串 >
< ; > Server2 < / value >
< ; /姓名 >
< 主机 serializeAs = 字符串 >
< > 192.168.0.1 < / value >
< / Host >
< 端口 serializeAs = 字符串 >
< > 20 < / value >
< / Port >
< Aktiv serializeAs = boolean >
< > false < / value >
< / Aktiv >
< < span class =code-leadattribute> / Server >
< / Serverliste >
< /设置 >







我尝试过:



我试图检查xml文件是否有错误,也尝试使用Deserialize方法。



搜索了很多,看了很多例子但是对我没用,也许xml文件sytax有错误?

解决方案

第一眼看, 服务器类必须是集合(数组)。



我建议遵循以下指令: .net - 从XML生成C#类 [ ^ ]用他们的attirbutes创建适当的类集。



请读我的小费:自定义类集合序列化和反序列化的完整示例 [< a href =https://www.codeproject.com/Tips/787867/A-complete-sample-of-custom-class-collection-seriatarget =_ blanktitle =New Window> ^

I want to read the Servers in a Serverlist from the XML file
and it shows me an error "error in xml document (2,2)
and I dont know how to fix it and if the xml file systax has an error ?


My Sourcecode:

XmlSerializer serializer = new XmlSerializer(typeof(Server));
FileStream loadStream = new
FileStream(@"C:\Users\dominik.scholz\Desktop\Settings.xml",
FileMode.Open, FileAccess.Read);
Settings loadedObject = (Settings)serializer.Deserialize(loadStream);
loadStream.Close();



My Class named "Serverliste"

[XmlRoot("Settings"), Serializable]
public class Settings
{
    [XmlElement("Serverliste")]
    public Serverliste Serverliste { get; set; }
}

public class Serverliste
{
    [XmlElement("Server")]
    public List<Server> Server { get; set; }
}

public class Server
{
    [XmlAttribute("Name")]
    public string Name { get; set; }

    [XmlAttribute("Host")]
    public string Host { get; set; }

    [XmlElement("Port")]
    public int Port { get; set; }

    [XmlElement("Aktiv")]
    public bool Aktiv { get; set; }
}




and my XML File

<?xml version="1.0"?>
<Settings>
    <Serverliste>
        <Server>
			<Name serializeAs="String">
				<value>Server1</value>
			</Name>
            <Host serializeAs="String">
                <value>127.0.0.1</value>
            </Host>
            <Port serializeAs="String">
                <value>10</value>
            </Port>
            <Aktiv serializeAs="boolean">
                <value>true</value>
            </Aktiv>
        </Server>
        <Server>
			<Name serializeAs="String">
				<value>Server2</value>
			</Name>
            <Host serializeAs="String">
                <value>192.168.0.1</value>
            </Host>
            <Port serializeAs="String">
                <value>20</value>
            </Port>
            <Aktiv serializeAs="boolean">
                <value>false</value>
            </Aktiv>
        </Server>
    </Serverliste>
</Settings>




What I have tried:

I tried to check xml file for errors, also tried to make use of Deserialize method.

Searched a lot and saw a lot of examples but didnt work for me, maybe the xml file sytax has an error?

解决方案

On the first look, Server class must be collection (array).

I'd suggest to follow instruction from: .net - Generate C# class from XML[^] to create proper set of classes with their attirbutes.

Please, read my tip too: A Complete Sample of Custom Class Collection Serialization and Deserialization[^]


这篇关于对象的Xml文件(反序列化)错误2,2的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆