c#反序列化元素映射

本文关键字:映射 元素 反序列化 | 更新日期: 2023-09-27 18:15:27

我想将下面的XML反序列化为下面的类型。如何正确地映射状态?(当前未映射,反序列化处理后仍为空)

<?xml version="1.0" encoding="UTF-8"?>
<job:job-status xsi:schemaLocation="http://marklogic.com/xdmp/job-status job-status.xsd" xmlns:job="http://marklogic.com/xdmp/job-status" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <job:forest>
    <job:forest-name>FOREST2</job:forest-name>
    <job:forest-id>1168048654236455340</job:forest-id>
    <job:status>completed</job:status>
    <job:journal-archiving>false</job:journal-archiving>
  </job:forest>
</job:job-status>
[XmlRoot("job-status", Namespace = "http://marklogic.com/xdmp/job-status")]
public class DatabaseRestoreStatus
{
    [XmlElement("status")]
    public string Status { get; set; }
}

c#反序列化元素映射

使用DataContract Serializer为我工作。我还必须再创建一个类。

using System;
using System.Collections.Generic;
using System.IO;
using System.Runtime.Serialization;
namespace SandboxConoleApp
{
    internal class Program
    { 
        private static void Main(string[] args)
        {
            DatabaseRestoreStatus data = null;
            using (var stream = File.Open("test.xml",FileMode.Open))
            {
                var formatter = new DataContractSerializer(typeof(DatabaseRestoreStatus));
                data = (DatabaseRestoreStatus)formatter.ReadObject(stream);
            } 
        }
    }
    [DataContract(Name = "job-status", Namespace = "http://marklogic.com/xdmp/job-status")]
    public class DatabaseRestoreStatus
    {
        [DataMember(Name = "forest")]
        public Forest Forest { get; set; }
    }
    [DataContract(Name = "forest", Namespace = "http://marklogic.com/xdmp/job-status")]
    public class Forest
    {
        [DataMember(Name = "status")]
        public string Status { get; set; }
    }
}