首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >XmlSerializer WebResponse

XmlSerializer WebResponse
EN

Stack Overflow用户
提问于 2015-04-21 21:39:05
回答 2查看 504关注 0票数 1

我有一个包含许多名称的XML,就像一个列表:

代码语言:javascript
复制
<apelidos>
    <apelido>Casmilo</apelido>
    <apelido>Castro</apelido>
</apelidos>

我的模型是这样的:

代码语言:javascript
复制
namespace IdCel.Model
{
   [XmlTypeAttribute(AnonymousType = true)]
   public class apelidos
   {
       [XmlArray("apelidos")]
       [XmlArrayItem("apelidos")]
       public List<apelido> apelidosNomes { get; set; }

       public apelidos()
       {
           apelidosNomes = new List<apelido>();
       }
   }

   public class apelido
   {
       [XmlElement(ElementName = "apelido")]
       public string apelidoNome { get; set; }
   }
}

还有我的XmlSerializer

代码语言:javascript
复制
HttpWebRequest request = WebRequest.Create(uri) as HttpWebRequest;
XmlSerializer ser = new XmlSerializer(objetoLista.GetType());

WebResponse response = request.GetResponse();
var result = ser.Deserialize(response.GetResponseStream());

return result;

但是它不起作用,我用没有列表的XML做同样的代码,它工作得很好

EN

回答 2

Stack Overflow用户

发布于 2015-04-21 22:01:19

如果您只需要读取apelido标记的内容,那么使用Linq To XML会快得多。例如:

代码语言:javascript
复制
var xml = @"<apelidos>
                <apelido>Casmilo</apelido>
                <apelido>Castro</apelido>
            </apelidos>";

var doc = XDocument.Parse(xml);
var apelidos = from apelido in doc.Descendants("apelido")
               select apelido.Value;

这将为您提供一个包含所有名称的IEnumerable<string>作为结果。

编辑:要从web加载XML,您可以执行以下操作:

代码语言:javascript
复制
HttpWebRequest request = WebRequest.Create(uri) as HttpWebRequest;

WebResponse response = request.GetResponse();
var doc = XDocument.Load(response.GetResponseStream());
票数 1
EN

Stack Overflow用户

发布于 2015-04-21 23:21:22

现在它起作用了!我这样做了:

代码语言:javascript
复制
[Serializable()]
public class apelidos
{
    [System.Xml.Serialization.XmlElement("apelido")]
    public List<string> apelido { get; set; }
}

还有这个:

代码语言:javascript
复制
HttpWebRequest request = WebRequest.Create(uri)
           as HttpWebRequest;

        XmlSerializer ser = new XmlSerializer(objetoLista.GetType());

        WebResponse response = request.GetResponse();
        var result = ser.Deserialize(response.GetResponseStream());

        return result;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29773863

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档