我收到一些看起来像这样的XML。
<?xml version="1.0"?>
<parent xmlns="urn:place-com:spec.2004">
<childA xmlns="">123</childA>
<childB xmlns="">456</childB>
</parent>
我用C#的XmlSerializer将它反序列化为一个类。它工作,除了空白子命名空间给我带来麻烦。它们在类中的属性为null。
我理解空白名称空间将元素放在global namespace中。可能不是什么意图,但我收到的正是如此。
如果我从子元素中手动删除xmlns=""
属性,则它可以正常工作。如果我使用xmlns="testNamespace"
填写属性并将以下属性添加到类中的属性,则它可以正常工作。
[XmlElement(Namespace="testNamespace")]
public string childA
{ ... }
但是,按原样保留XML,并添加以下属性不起作用。
[XmlElement(Namespace="")]
如何指定元素具有空白名称空间以进行反序列化?
答案 0 :(得分:1)
对于所讨论的xml,以下类可以很好地工作。
[XmlRoot("parent", Namespace = "urn:place-com:spec.2004", IsNullable = false)]
public class Parent
{
[XmlElement("childA", Namespace = "")]
public string ChildA { get; set; }
[XmlElement("childB", Namespace = "")]
public string ChildB { get; set; }
}