c# - 如何指定一个子元素在全局命名空间中?

标签 c# xml

我收到一些看起来像这样的 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/

相关文章:

mysql - 发送到 xml 时对文件进行排序

Android ScrollView 设置显示内容的高度

Jquery XML 解析 URL 问题

java - 自定义卡片 View 形状

c# - 如何从单独的文件中获取私钥?

c# - 用于过滤实体集合列表并维护实体列表的 Linq 表达式

c# - 如何检查窗口是否已经打开?重复窗口

android - Imageview 变得模糊

c# - 与 C# 相比,简单循环上的 F# 代码性能较差 - 为什么?

c# - 如何使用客户端 Windows 凭据连接到 Web 中的 SQL Server 数据库