Ошибка десериализации XML-данных в C#
У меня есть SVG-файл в формате XML, я пытаюсь десериализовать XML в объекты C#, но при попытке десериализовать XML-данные он выдает ошибку
Ниже приведен мой код
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);
Ниже приведен мой класс
[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.Десериализация(поток);
Ошибка {"&ЛТ;описание СВГ='http://www.w3.org/2000/svg в'> был не ожидаются."}
Ниже приведены мои XML-данные
<?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>
Что я уже пробовал:
Перепробовал много вещей, но я не понимаю, почему эта ошибка приходит. Может ли кто-нибудь, пожалуйста, помочь мне решить эту ошибку. Я застрял с этой ошибкой уже неделю и не могу ее решить.
Mehdi Gholam
Зачем конвертировать файл .svg в json или даже объекты c#?
Member 13041059
Я хочу вставить данные json в базу данных, и эти данные будут проходить через файл .svg только в моем проекте
F-ES Sitecore
Просто deserialise в XML-код в C# объекты, прямые, идет через JSON-это бессмысленно.
Maciej Los
Что-то не так с вашим xml. xsd.exe инструмент не может создать файл схемы для этого. Пожалуйста, попробуйте сами: Как использовать инструмент определения XML - схемы для создания классов и документов XML-схемы