首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否可以使用平面XML文件并使其成为复杂的类?

是否可以使用平面XML文件并使其成为复杂的类?
EN

Stack Overflow用户
提问于 2022-12-01 20:57:58
回答 1查看 28关注 0票数 0

说我有这样的东西

代码语言:javascript
复制
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>

是否可以使用YAXLib将其反序列化为如下所示

代码语言:javascript
复制
public class Note 
{
  public string to {get; set;}
  public string from {get; set;}
  public string Info {get; set;}
}

public class Info 
{
   public string header {get; set;}
   public string body {get; set;}
}

是否有任何设置可以让我更改这个路径以使其进入我设置的C#类?

EN

回答 1

Stack Overflow用户

发布于 2022-12-02 00:05:05

假设您想让这些类看起来如下所示:

代码语言:javascript
复制
public class Note
{
    public string to { get; set; }
    public string from { get; set; }
    public Info Info { get; set; }
}

public class Info
{
    public string heading { get; set; }
    public string body { get; set; }
}

看起来,获得所需内容的绝对最简单的方法是有两个单独的反序列化器。一个用于Info,另一个用于Note,然后反序列化(跳过缺少元素的错误)并自己将两个对象缝合在一起,如下所示:

代码语言:javascript
复制
Note GetNoteFromXml(string xml)
{
    var noteSer = new YAXSerializer<Note>(new SerializerOptions
    {
        ExceptionHandlingPolicies = YAXExceptionHandlingPolicies.DoNotThrow
    });
    var infoSer = new YAXSerializer<Info>();

    var note = noteSer.Deserialize(xml);
    var info = infoSer.Deserialize(xml);
    note.Info = info;
    return note;
}
代码语言:javascript
复制
var xml = @"<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>";

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

https://stackoverflow.com/questions/74648080

复制
相关文章

相似问题

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