首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何将XML字符串反序列化为object

如何将XML字符串反序列化为object
EN

Stack Overflow用户
提问于 2018-07-10 14:18:47
回答 1查看 120关注 0票数 1

从web服务中,我得到了一个XML字符串,我需要将它映射到一个对象上。我正在尝试将下面的XML映射到一个对象,但条目为空。

代码语言:javascript
复制
<?xml version=\"1.0\" encoding=\"utf-8\"?>
<feed xml:base=\"http://abc.example.com/pwa/_api/ProjectData/\" xmlns=\"http://www.w3.org/2005/Atom\" xmlns:d=\"http://schemas.microsoft.com/ado/2007/08/dataservices\" xmlns:m=\"http://schemas.microsoft.com/ado/2007/08/dataservices/metadata\">
  <id>http://abc.example.com/pwa/_api/ProjectData/Projects</id>
  <title type=\"text\">Projects</title>
  <updated>2018-07-10T06:06:50Z</updated>
  <link rel=\"self\" title=\"Projects\" href=\"Projects\" />
  <entry>
    <id>http://abc.example.com/pwa/_api/ProjectData/Projects(guid'e396cf5d-43c1-e611-941d-00155d064605')</id>
    <category term=\"ReportingData.Project\" scheme=\"http://schemas.microsoft.com/ado/2007/08/dataservices/scheme\" />
    <link rel=\"edit\" title=\"Project\" href=\"Projects(guid'e396cf5d-43c1-e611-941d-00155d064605')\" />
    <title />
    <updated>2018-07-10T06:06:50Z</updated>
    <author>
      <name />
    </author>
    <content type=\"application/xml\">
      <m:properties>
        <d:ProjectName>PROJ - 01</d:ProjectName>
      </m:properties>
    </content>
  </entry>
  <entry>
    <id>http://abc.example.com/pwa/_api/ProjectData/Projects(guid'7d931b63-cd80-e711-941f-00155d064605')</id>
    <category term=\"ReportingData.Project\" scheme=\"http://schemas.microsoft.com/ado/2007/08/dataservices/scheme\" />
    <link rel=\"edit\" title=\"Project\" href=\"Projects(guid'7d931b63-cd80-e711-941f-00155d064605')\" />
    <title />
    <updated>2018-07-10T06:06:50Z</updated>
    <author>
      <name />
    </author>
    <content type=\"application/xml\">
      <m:properties>
        <d:ProjectName>PROJ - 02</d:ProjectName>
      </m:properties>
    </content>
  </entry>
  <link rel=\"next\" href=\"http://abc.example.com/pwa/_api/ProjectData/Projects?$select=ProjectName&amp;$skiptoken=guid'b80c2f61-2981-4a42-8f3e-9301b3871494'\" />
</feed>

下面是我调用服务和读取响应的方式:

代码语言:javascript
复制
var credentials = new NetworkCredential(usr, pwd);
var request = (HttpWebRequest)WebRequest.Create("......");
request.Credentials = credentials;
var res = request.GetResponse();

var stream = res.GetResponseStream();
var reader = new StreamReader(stream, System.Text.Encoding.GetEncoding("utf-8"), true);
string strResponse = reader.ReadToEnd();

var strReader = new StringReader(strResponse);
var serializer = new XmlSerializer(typeof(EPMProjects));
var xmlReader = new XmlTextReader(strReader);
var obj = serializer.Deserialize(xmlReader);

以及要映射到的模型类:

代码语言:javascript
复制
[XmlRoot("feed", Namespace = "http://www.w3.org/2005/Atom")]
public class EPMProjects
{
    [XmlElement("entry")]
    public List<EPMProject> Projects { get; set; }

    public EPMProjects()
    {
        Projects = new List<EPMProject>();
    }
}

public class EPMProject
{
    [XmlElement("ProjectName")]
    public string ProjectName { get; set; }
}
EN

回答 1

Stack Overflow用户

发布于 2018-07-24 04:00:57

一种方法是复制原始的xml,然后转到visual studio ->,编辑->,粘贴特殊的->,将Xml粘贴为类。它将为您生成类。它们的格式不会很好,但您可以重构它。

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

https://stackoverflow.com/questions/51258361

复制
相关文章

相似问题

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