2013-05-24 2 views
3

Я хотел бы десериализовать следующий XML в следующем типе. Как правильно отобразить статус? (В настоящее время она не отображается и остается пустой после процесса десериализации)Отображение элемента десериализации C#

<?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; } 
} 

ответ

4

Использование 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; } 
    } 
}