在C#中反序列化XML数据时出错 [英] Error in deserializing the XML data in C#

查看:81
本文介绍了在C#中反序列化XML数据时出错的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个XML格式的SVG文件我试图将XML反序列化为C#对象,但是在尝试反序列化XML数据时它给出了错误



以下是我的代码



I have a SVG file in XML format i am trying to deserialize XML to C# objects but when trying to deserialize XML data it is giving error

Below is my code

XmlSerializer serializer = new XmlSerializer(typeof(List<rootobject>));
object objectList = null;
using (StreamReader stream = new StreamReader(@"C:\Users\sana-user\Documents\Visual Studio 2015\Projects\SVGXMLToJsonApp\SVGXMLToJsonApp\File\3rect.svg"))
{
objectList = serializer.Deserialize(stream);
}
Console.WriteLine(objectList);







以下是我的class






Below is my class

[System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true, Namespace = "http://www.w3.org/2000/svg")]
    [System.Xml.Serialization.XmlRootAttribute(Namespace = "http://www.w3.org/2000/svg", IsNullable = false)]
    public partial class svg
    {

        private svgStyle styleField;

        private svgG[] gField;

        private string[] textField;

        private decimal versionField;

        private string idField;

        private string xField;

        private string yField;

        private string viewBoxField;

        private string style1Field;

        private string spaceField;

        public svgStyle style
        {
            get
            {
                return this.styleField;
            }
            set
            {
                this.styleField = value;
            }
        }

        [System.Xml.Serialization.XmlElementAttribute("g")]
        public svgG[] g
        {
            get
            {
                return this.gField;
            }
            set
            {
                this.gField = value;
            }
        }

        [System.Xml.Serialization.XmlTextAttribute()]
        public string[] Text
        {
            get
            {
                return this.textField;
            }
            set
            {
                this.textField = value;
            }
        }

        [System.Xml.Serialization.XmlAttributeAttribute()]
        public decimal version
        {
            get
            {
                return this.versionField;
            }
            set
            {
                this.versionField = value;
            }
        }

        [System.Xml.Serialization.XmlAttributeAttribute()]
        public string id
        {
            get
            {
                return this.idField;
            }
            set
            {
                this.idField = value;
            }
        }

        [System.Xml.Serialization.XmlAttributeAttribute()]
        public string x
        {
            get
            {
                return this.xField;
            }
            set
            {
                this.xField = value;
            }
        }

        [System.Xml.Serialization.XmlAttributeAttribute()]
        public string y
        {
            get
            {
                return this.yField;
            }
            set
            {
                this.yField = value;
            }
        }

        [System.Xml.Serialization.XmlAttributeAttribute()]
        public string viewBox
        {
            get
            {
                return this.viewBoxField;
            }
            set
            {
                this.viewBoxField = value;
            }
        }

        [System.Xml.Serialization.XmlAttributeAttribute("style")]
        public string style1
        {
            get
            {
                return this.style1Field;
            }
            set
            {
                this.style1Field = value;
            }
        }

        [System.Xml.Serialization.XmlAttributeAttribute(Form = System.Xml.Schema.XmlSchemaForm.Qualified, Namespace = "http://www.w3.org/XML/1998/namespace")]
        public string space
        {
            get
            {
                return this.spaceField;
            }
            set
            {
                this.spaceField = value;
            }
        }
    }

    [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true, Namespace = "http://www.w3.org/2000/svg")]
    public partial class svgStyle
    {

        private string typeField;

        private string valueField;

        [System.Xml.Serialization.XmlAttributeAttribute()]
        public string type
        {
            get
            {
                return this.typeField;
            }
            set
            {
                this.typeField = value;
            }
        }

        [System.Xml.Serialization.XmlTextAttribute()]
        public string Value
        {
            get
            {
                return this.valueField;
            }
            set
            {
                this.valueField = value;
            }
        }
    }

    [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true, Namespace = "http://www.w3.org/2000/svg")]
    public partial class svgG
    {

        private svgGText textField;

        private svgGRect rectField;

        private string[] textField1;

        private string idField;

        public svgGText text
        {
            get
            {
                return this.textField;
            }
            set
            {
                this.textField = value;
            }
        }

        public svgGRect rect
        {
            get
            {
                return this.rectField;
            }
            set
            {
                this.rectField = value;
            }
        }

        [System.Xml.Serialization.XmlTextAttribute()]
        public string[] Text
        {
            get
            {
                return this.textField1;
            }
            set
            {
                this.textField1 = value;
            }
        }

        [System.Xml.Serialization.XmlAttributeAttribute()]
        public string id
        {
            get
            {
                return this.idField;
            }
            set
            {
                this.idField = value;
            }
        }
    }

    [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true, Namespace = "http://www.w3.org/2000/svg")]
    public partial class svgGText
    {

        private string idField;

        private string transformField;

        private string classField;

        private string valueField;

        [System.Xml.Serialization.XmlAttributeAttribute()]
        public string id
        {
            get
            {
                return this.idField;
            }
            set
            {
                this.idField = value;
            }
        }

        [System.Xml.Serialization.XmlAttributeAttribute()]
        public string transform
        {
            get
            {
                return this.transformField;
            }
            set
            {
                this.transformField = value;
            }
        }

        [System.Xml.Serialization.XmlAttributeAttribute()]
        public string @class
        {
            get
            {
                return this.classField;
            }
            set
            {
                this.classField = value;
            }
        }

        [System.Xml.Serialization.XmlTextAttribute()]
        public string Value
        {
            get
            {
                return this.valueField;
            }
            set
            {
                this.valueField = value;
            }
        }
    }

    [System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true, Namespace = "http://www.w3.org/2000/svg")]
    public partial class svgGRect
    {

        private string idField;

        private decimal xField;

        private decimal yField;

        private string classField;

        private decimal widthField;

        private decimal heightField;

        [System.Xml.Serialization.XmlAttributeAttribute()]
        public string id
        {
            get
            {
                return this.idField;
            }
            set
            {
                this.idField = value;
            }
        }

        [System.Xml.Serialization.XmlAttributeAttribute()]
        public decimal x
        {
            get
            {
                return this.xField;
            }
            set
            {
                this.xField = value;
            }
        }

        [System.Xml.Serialization.XmlAttributeAttribute()]
        public decimal y
        {
            get
            {
                return this.yField;
            }
            set
            {
                this.yField = value;
            }
        }

        [System.Xml.Serialization.XmlAttributeAttribute()]
        public string @class
        {
            get
            {
                return this.classField;
            }
            set
            {
                this.classField = value;
            }
        }

        [System.Xml.Serialization.XmlAttributeAttribute()]
        public decimal width
        {
            get
            {
                return this.widthField;
            }
            set
            {
                this.widthField = value;
            }
        }

        [System.Xml.Serialization.XmlAttributeAttribute()]
        public decimal height
        {
            get
            {
                return this.heightField;
            }
            set
            {
                this.heightField = value;
            }
        }
    }





错误出现在行objectList = serializer.Deserialize(stream );

错误是{< svg xmlns ='http://www.w3.org/2000/svg'>不是预期的。}





以下是我的XML数据





Error is coming on line objectList = serializer.Deserialize(stream);
Error is {"<svg xmlns='http://www.w3.org/2000/svg'> was not expected."}


Below is my XML data

<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 22.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
<svg version="1.1" id="_x30_" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"

	 viewBox="0 0 1366 768" style="enable-background:new 0 0 1366 768;" xml:space="preserve">
<style type="text/css">
	.st0{fill:none;stroke:#000000;stroke-width:0.7087;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
	.st1{fill:#105689;}
	.st2{font-family:'ArialMT';}
	.st3{font-size:56.5499px;}
	.st4{fill:#4554A5;}
	.st5{font-size:56.5574px;}
	.st6{fill:#2776BB;}
</style>
<g id="LWPOLYLINE">
	<rect id="idrect3" x="251.4" y="-0.3" class="st0" width="866" height="300.2"/>
</g>
<g id="LWPOLYLINE_1_">
	<rect id="idrect2" x="248.6" y="366.5" class="st0" width="500.3" height="400.2"/>
</g>
<g id="LWPOLYLINE_2_">
	<rect id="idrect1" x="811.4" y="364.2" class="st0" width="300.2" height="404.1"/>
</g>
<g id="TEXT">
	<text id="idnano" transform="matrix(1 0 0 1 515.7997 166.1773)" class="st1 st2 st3">Nano Tech</text>
</g>
<g id="TEXT_1_">
	<text id="idmigalo" transform="matrix(1 0 0 1 420.2463 553.5321)" class="st4 st2 st5">Migalo</text>
</g>
<g id="TEXT_2_">
	<text id="idprime" transform="matrix(1 0 0 1 883.9615 567.5667)" class="st6 st2 st5">Prime</text>
</g>
</svg>





我的尝试:



尝试了很多东西,但我不知道为什么会出现这个错误。任何人都可以帮我解决这个错误。我被困在这个错误一周以来无法解决它。



What I have tried:

Tried many things but i am not getting why this error is coming. Can anyone please help me out to solve this error. I am stuck with this error since a week and unable to solve it.

推荐答案

您的XML如下:

Your XML is the following:
<svg version="1.1" id="_x30_" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 1366 768" style="enable-background:new 0 0 1366 768;" xml:space="preserve">

<style type="text/css">



您的课程中有以下内容:


You have the following in your class:

public class Svg
...
public Style style { get; set; }
...
public class Style
...



XML中有两个不同版本的样式,但是你的C#中只有一个版本。



这是正确的,它捕获了样式标签:


You have two different versions of "style" in your XML, but only one version in your C#.

This is correct, it captures the style tag:

public class Style




public Style style { get; set; }



要捕获属性,您应该将其添加到Svg类:


To capture the attribute you should add this to the Svg class:

public string style { get; set; }





希望有所帮助!



Hope that helps!


这篇关于在C#中反序列化XML数据时出错的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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