c# - 如何指定子元素在全局名称空间中?
问题描述
我收到了一些看起来像这样的 XML。
<?xml version="1.0"?>
<parent xmlns="urn:place-com:spec.2004">
<childA xmlns="">123</childA>
<childB xmlns="">456</childB>
</parent>
我正在使用 C# 的 XmlSerializer 将其反序列化为一个类。它可以工作,除了空白的子命名空间给我带来了麻烦。它们在类中的属性为空。
我了解空白名称空间将元素放在全局名称空间中。可能不是预期的,但我收到的却是。
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; }
}
推荐阅读
- raspberry-pi - GPU 上的 OpenCL 性能问题
- ruby-on-rails - Mysql2::Error::ConnectionError: 拒绝用户访问
- sql - oracle sql如何选择特定的单词
- javascript - 使用 Ag Grid 动态改变单元格颜色
- assembly - 如何判断十六进制机器代码中表示了多少符号指令?
- chart.js - 工具提示chartsjs的左侧或右侧偏移
- jquery - 仅在选中以前的复选框时才显示复选框
- javascript - 使用循环变量进行同名函数调用 - Javascript
- html - css 悬停在保持菜单显示块上
- ios - Swift - 如果项目滚动一点,UICollection 快速恢复