XmlSerializer를 사용하여 문서를 역 직렬화 제대로XmlSerializer를 사용하여 네임 스페이스로 XML 문서를 비 직렬화하려면 어떻게해야합니까?
문서
<?xml version=\"1.0\"?>
<ns0:ElementA xmlns:ns0=\"urn:some-namespace\">
<Prop1>Some Value</Prop1>
<Prop2>Some other value</Prop2>
</ns0:ElementA>
클래스
[XmlRoot(Namespace = "urn:some-namespace")]
public class ElementA
{
[XmlElement]
public string Prop1 { get; set; }
[XmlElement]
public string Prop2 { get; set; }
}
Prop1 및 Prop2 모두가 직렬화의 끝에 null이 직렬화되지 않습니다.
문서의 구조를 변경하여 네임 스페이스를 제거 할 수 없으므로, 내 측면에서 제대로 deserialization을 처리해야합니다.
문서는 재생의 목적을 위해 단순화 된
나는 ElementA의 속성을 설정해야 제대로 직렬화를 처리하는 방법을??
- 여기서 문제 재현의 전체 코드입니다 - 나는 그것을 확인하지 않은 이후
namespace ConsoleApplication1
{
using System;
using System.IO;
using System.Xml.Serialization;
public class Program
{
[XmlRoot(Namespace = "urn:some-namespace")]
public class ElementA
{
[XmlElement]
public string Prop1 { get; set; }
[XmlElement]
public string Prop2 { get; set; }
}
static void Main(string[] args)
{
var element =
"<?xml version=\"1.0\"?>" + Environment.NewLine +
"<ns0:ElementA xmlns:ns0=\"urn:some-namespace\">" + Environment.NewLine+ " <Prop1>Some Value</Prop1>" + Environment.NewLine +
" <Prop2>Some other value</Prop2>" + Environment.NewLine +
"</ns0:ElementA>";
XmlSerializer serializer = XmlSerializer.FromTypes(new[] { typeof(ElementA) })[0];
ElementA result;
using (var reader = new StringReader(element))
{
result = serializer.Deserialize(reader) as ElementA;
}
Console.WriteLine("Prop1: " + result.Prop1);
Console.WriteLine("Prop2: " + result.Prop2);
Console.ReadKey();
}
}
}
임의의 생각 - 당신은 속성에'[XmlElement (Namespace = "")]'시도 했습니까? –
@Marc, 정확하게해야 할 일이 있습니다. 답변으로 게시 할 수 있습니다. –
@Darin - 나는 휴대 성을 갖추고 검증 할 수있는 위치에 있지 않았기 때문에 나는 대답으로 게시하지 않았다. (나는 대답에 대해 합리적으로 확신한다.) 당신이 나를 추월하기 전에 나는 지금 겨우 몇 달 남았을 것 같습니다, P –