我收到一些看起来像这样的 XML。
<?xml version="1.0"?>
<parent xmlns="urn:place-com:spec.2004">
<childA xmlns="">123</childA>
<childB xmlns="">456</childB>
</parent>
我正在使用 C# 的 XmlSerializer 将其反序列化为一个类。它有效,除了空白的子 namespace 给我带来麻烦。它们在类中的属性为空。
我理解空白命名空间将元素放入 global namespace 中。可能不是预期的,但我仍然收到了。
如果我手动从子元素中删除 xmlns=""
属性,它会起作用。如果我用 xmlns="testNamespace"
填写属性并将以下属性添加到类中的属性,它就可以工作。
[XmlElement(Namespace="testNamespace")]
public string childA
{ ... }
但是,保留 XML 原样并添加以下属性不起作用。
[XmlElement(Namespace="")]
如何指定元素具有用于反序列化的空白命名空间?
最佳答案
对于出现问题的 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; }
}
关于c# - 如何指定一个子元素在全局命名空间中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50063657/