猿问

如何使用XML属性指定另一个XML名称?

我有这个XML:


<?xml version="1.0" encoding="UTF-8"?>

<doc>

   <id>19</id>

   <name>Name is here</name>

   <note>leader-it test user</note>

   <list name="products">

      <elem>

         <id>2537</id>

         <name>Product #2537</name>

         <status>Deleted</status>

         <cost>1.00</cost>

      </elem>

      <elem>

         <id>2541</id>

         <name>Product #2541</name>

         <status>Active</status>

         <cost>1.00</cost>

      </elem>

   </list>

   <list name="balance">

      <elem>

         <id>19</id>

         <project>Project 15</project>

         <balance>108046.1716</balance>

      </elem>

   </list>

   <label />

   <country>182</country>

</doc>

我正在尝试反序列化


var account = XmlHelper.ParseXml<Account>(xml_string);


public static class XmlHelper

{

    public class NamespaceIgnorantXmlTextReader : XmlTextReader

    {

         public NamespaceIgnorantXmlTextReader(TextReader reader) : base(reader) { }

         public override string NamespaceURI

        {

            get { return String.Empty; }

        }

    }


    public static T ParseXml<T>(string xml)

    {

        try

        {

            var serializer = new XmlSerializer(typeof(T));

            using (var reader = new StringReader(xml))

            {

                using (var xmlTextReader = new NamespaceIgnorantXmlTextReader(reader))

                {

                    return (T)(serializer.Deserialize(xmlTextReader));

                }

            }

        }

        catch (Exception e)

        {

            return default(T);

        }

    }

}

使用这些类:


[XmlRoot(ElementName = "doc")]

public class Account

{

    [XmlElement("id")]

    public int Id { get; set; }


    [XmlElement("name")]

    public string Name { get; set; }


    [XmlElement("note")]

    public string Note { get; set; }


我遇到了这个错误:


当前作用域中已经存在来自名称空间“”的XML元素“列表”。使用XML属性为元素指定另一个XML名称或名称空间。


如何使用XML属性指定另一个XML名称?


翻过高山走不出你
浏览 142回答 1
1回答
随时随地看视频慕课网APP
我要回答