使用 XmlSerializer 的多个命名空间

2024-03-14

这是场景:

我有嵌套类,需要在 xml 文档中序列化

[XmlRoot(Namespace="http://www.foo.bar/myschema")]
public class root 
{
    [XmlAttribute]
    public string version { get; set; }

    [XmlElement]
    public child child { get; set; }

    ...
}

[XmlRoot(Namespace="http://www.foo.bar/myschema")]
public class child
{
    [XmlElement]
    public int elemA { get; set; }

    [XmlElement]
    public string elemB { get; set; }

    ...
}

我创建了一种基于另一个示例的方法来删除其他命名空间并设置自定义命名空间:

public static void Save<T>(this T type, string path)
{
    System.Xml.Serialization.XmlSerializer xs = 
        new System.Xml.Serialization.XmlSerializer(type.GetType());

    System.Xml.Serialization.XmlSerializerNamespaces ns = 
        new System.Xml.Serialization.XmlSerializerNamespaces();
    ns.Add("", "http://www.foo.bar/myschema");

    using(XmlWriter file = XmlWriter.Create(path))
    {
        xs.Serialize(file, type, ns);
    }
}

我得到这个代码的结果:

<?xml version="1.0" encoding="utf-8"?>
<root xmlns="http://www.foo.bar/myschema" version="2.00">
    <child>
        <elemA>1</elemA>
        ...
    </child>
</root>

但预期是这样的:

<?xml version="1.0" encoding="utf-8"?>
<root xmlns="http://www.foo.bar/myschema" version="2.00">
    <child xmlns="http://www.foo.bar/myschema">
        <elemA>1</elemA>
        ...
    </child>
</root>

我们必须在两个标签中设置自定义命名空间声明。这可能吗?

Edit:

这是一个现实世界的例子:

<?xml version="1.0" encoding="UTF-8"?>
<enviNFe xmlns="http://www.portalfiscal.inf.br/nfe" versao="1.01">
    <idLote>200602220000001</idLote>
    <NFe xmlns="http://www.portalfiscal.inf.br/nfe">
        <infNFe Id="NFe31060243816719000108550000000010001234567890" versao="1.01">
        ...
        <Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
        ...
    </NFe>
    <NFe xmlns="http://www.portalfiscal.inf.br/nfe">
        <infNFe Id="NFe31060243816719000108550000000010011234567900" versao="1.01">
        ...
        <Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
        ...
    </NFe>
    <NFe xmlns="http://www.portalfiscal.inf.br/nfe">
        <infNFe Id="NFe31060243816719000108550000000010021234567916" versao="1.01">
        ...
        <Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
        ...
    </NFe>
</enviNFe>

从 XML 的角度来看,您的示例是相同的,因此第一个示例非常好。如果您必须使用第二个,那么我们对 XML 的理解或您的处理管道就存在严重问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 XmlSerializer 的多个命名空间 的相关文章

  • XML-RPC 和 SOAP 有什么区别?

    我从来没有真正理解为什么 Web 服务实施者会选择其中之一 XML RPC 通常出现在较旧的系统中吗 任何有助于理解这一点的帮助将不胜感激 差异 SOAP 更强大 并且更受软件工具供应商 MSFT NET Java 企业版等 的青睐 SOA
  • 处理 fanart.tv Web 服务响应 JSON 和 C#

    我正在尝试使用 fanart tv Webservice API 但有几个问题 我正在使用 Json Net Newtonsoft Json 并通过其他 Web 服务将 JSON 响应直接反序列化为 C 对象 这里的问题是元素名称正在更改
  • 使用实体框架从集合中删除项目

    我正在使用DDD 我有一个 Product 类 它是一个聚合根 public class Product IAggregateRoot public virtual ICollection
  • 有什么工具可以说明每种方法运行需要多长时间?

    我的程序的某些部分速度很慢 我想知道是否有我可以使用的工具 例如它可以告诉我可以运行 methodA 花了 100ms 等等 或者类似的有用信息 如果您使用的是 Visual Studio Team System 性能工具 中有一个内置分析
  • Linux TUN/TAP:无法从 TAP 设备读回数据

    问题是关于如何正确配置想要使用 Tun Tap 模块的 Linux 主机 My Goal 利用现有的路由软件 以下为APP1和APP2 但拦截并修改其发送和接收的所有消息 由Mediator完成 我的场景 Ubuntu 10 04 Mach
  • try-catch 中未处理的异常

    try list from XElement e in d Descendants wix File where e Attribute Name Value Contains temp Name e Parent Parent Attri
  • 在 Xcode4 中使用 Boost

    有人设置 C Xcode4 项目来使用 Boost 吗 对于一个简单的 C 控制台应用程序 我需要在 Xcode 中设置哪些设置 Thanks 用这个来管理它 和这个
  • 获取从属性构造函数内部应用到哪个属性的成员?

    我有一个自定义属性 在自定义属性的构造函数内 我想将属性的属性值设置为属性所应用到的属性的类型 是否有某种方式可以访问该属性所应用到的成员从我的属性类内部 可以从 NET 4 5 using CallerMemberName Somethi
  • 范围和临时初始化列表

    我试图将我认为是纯右值的内容传递到范围适配器闭包对象中 除非我将名称绑定到初始值设定项列表并使其成为左值 否则它不会编译 这里发生了什么 include
  • C# using 语句、SQL 和 SqlConnection

    使用 using 语句 C SQL 可以吗 private static void CreateCommand string queryString string connectionString using SqlConnection c
  • UWP 无法在两个应用程序之间创建本地主机连接

    我正在尝试在两个 UWP 应用程序之间设置 TCP 连接 当服务器和客户端在同一个应用程序中运行时 它可以正常工作 但是 当我将服务器部分移动到一个应用程序并将客户端部分移动到另一个应用程序时 ConnectAsync 会引发异常 服务器未
  • 如何检测 C# 中该字典键是否存在?

    我正在使用 Exchange Web 服务托管 API 和联系人数据 我有以下代码 即功能性的 但并不理想 foreach Contact c in contactList string openItemUrl https service
  • 运行代码首先迁移更新数据库时出错

    我在迁移到数据库时遇到问题 并且似乎找不到我遇到的错误的答案 System MissingMethodException Method not found System Data Entity Migrations Builders Tab
  • .NET UI 元素线程限制的原因

    我们知道 除了实例化元素的线程之外 不可能从任何线程执行操作任何 UI 元素属性的代码 我的问题是 为什么 我记得当我们使用 COM 用户界面元素时 在 COM Visual Basic 6 0 时代 所有 UI 元素都是使用 COM 类和
  • 以编程方式使用自定义元素创建网格

    我正在尝试以编程方式创建一个网格 并将自定义控件作为子项附加到网格中 作为 2x2 矩阵中的第 0 行第 0 列 为了让事情变得更棘手 我使用了 MVVM 设计模式 下面是一些代码可以帮助大家理解这个想法 应用程序 xaml cs base
  • 在基类集合上调用派生方法

    我有一个名为 A 的抽象类 以及实现 A 的其他类 B C D E 我的派生类持有不同类型的值 我还有一个 A 对象的列表 abstract class A class B class A public int val get privat
  • Azure函数版本2.0-应用程序blobTrigger不工作

    我有一个工作功能应用程序 它有一个 blob 输入和一个事件中心输出 在测试版中工作 随着最新的更改 我的功能不再起作用 我尝试根据发行说明更新 host json 文件 但它没有引用 blob 触发器 version 2 0 extens
  • 如何确定母版页中正在显示哪个子页?

    我正在母版页上编写代码 我需要知道正在显示哪个子 内容 页面 我怎样才能以编程方式做到这一点 我用这个 string pageName this ContentPlaceHolder1 Page GetType FullName 它以 AS
  • 如何使用 std::array 模拟 C 数组初始化“int arr[] = { e1, e2, e3, ... }”行为?

    注意 这个问题是关于不必指定元素数量并且仍然允许直接初始化嵌套类型 这个问题 https stackoverflow com questions 6111565 now that we have stdarray what uses are
  • 如何创建向后兼容 Windows 7 的缩放和尺寸更改每显示器 DPI 感知应用程序?

    我是 WPF 和 DPI 感知 API 的新手 正在编写一个在 Windows 7 8 1 和 10 中运行的应用程序 我使用具有不同每个显示器 DPI 设置的多个显示器 并且有兴趣将我的应用程序制作为跨桌面配置尽可能兼容 我已经知道可以将

随机推荐

  • 使用 Azure 服务总线进行结构化流处理

    如何为Azure服务总线设置Spark结构化流会话 我目前正在使用 azure databricks 作为服务总线主题订阅之一的消费者 我已经研究了几件事 但看到了周围的问题 https github com elastacloud ser
  • 如何在 Windows 上使用 Vim 编译 C++ 代码?

    首先 我安装Vim 文本编辑器 in Typical在这台 Windows 7 笔记本电脑上键入 我正在使用的用户是这台计算机上的管理员 但无法打开其中的文件 程序文件 使用 Vim 编写的位置 所以我改变我的 cd当前目录到我的 HOME
  • 如何在d3中加载geojson文件的geometryCollection

    我使用 Mapshapers 成功将英国地图 shapefile 转换为 geojson 但我无法在 d3 js 中加载此 geojson 请帮忙 脚本如下
  • 如何用onclick确认并调用函数

    我可以调用 JavaScript 函数吗return confirm 在 HTML onclick 事件中还是我需要执行包含确认和调用另一个函数的函数
  • 将现有文件夹放入存储库

    我认为直接在记事本中修改文件可能很危险 是时候进行一些适当的源代码控制了 我对源代码控制很陌生 我已在我的服务器上安装了 VisualSVN 服务器 并在我的客户端计算机上安装了 TortoiseSVN 我可以很好地创建新文件夹 检查它们等
  • 如何在Python中简单地计算时间序列的滚动/移动方差?

    我有一个简单的时间序列 我正在努力估计移动窗口内的方差 更具体地说 我无法弄清楚与实现滑动窗口函数的方式有关的一些问题 例如 当使用 NumPy 且窗口大小 20 时 def rolling window a window shape a
  • 为什么我必须将 async 关键字添加到具有 wait 关键字的函数中?

    我只想等待进程完成 不想使函数异步 请参阅下面的代码 我必须使 getUserList 异步 因为函数中有一个await 关键字 因此 我还必须编写 await UsersService getUserList 之类的内容来执行该方法 并且
  • Git/Eclipse 工作流程

    我使用 Eclipse 来编辑 Java 并使用 Git 作为我的 VCS 我应该将本地存储库放在工作区中还是工作区之外 并在每次要提交时复制文件 我知道我可以通过各种方式做到这一点 但我是 Git 新手 想知道哪种方式更好 目前最好的做法
  • 带默认子级的 Vue.js 嵌套路由

    我对 Vue js 2 中的默认子路由有疑问 当我最初访问 localhost listings 时 它会正确加载 index vue 和 map vue 作为子项 当我使用 router link 导航到 localhost listin
  • 如何在加载网页之前运行内容脚本?

    我想更改一些 dom 内容 使所有输入字段值都是 在用户可以看到网页之前先对其进行显示 我该怎么做 有什么办法可以做到这一点吗 谢谢 您需要一个运行于文档开始 https developer chrome com extensions co
  • 如何查找具有相同字段的mongo文档

    我有一个 mongo 集合 我需要在该集合中查找文档 其中字段名称和地址相等 我找了很多 只能找到MongoDb 比较 2 个字段的查询条件 https stackoverflow com questions 4442453 mongodb
  • dig (DNS Lookup) 指定 Windows 上的 DNS 服务器

    在Linux中 我会使用dig使用以下命令指定 DNS 服务器 127 0 0 1 dig google com 127 0 0 1 我安装了 Windows 的绑定工具 choco install bind toolsonly 我怎样才能
  • 带 Spring Boot 项目的 Modbus 脉冲线圈

    必须实施呼叫数字IO with Modbus协议 on 春季启动项目构建者Maven 它应该是在身体上有一定持续时间的脉冲呼叫 例如 5 秒等 以下是规范中的一个片段 关于响应和错误的更多信息 看来这个呼叫应用程序应该表现得像一个大师 在这
  • Linux:在有限空间上使用分割

    我的 Linux 机器上有一个巨大的文件 该文件约为 20GB 我的盒子上的空间约为 25GB 我想将文件分成约 100mb 的部分 我知道有一个 分割 命令 但它保留了原始文件 我没有足够的空间来保存原件 关于如何实现这一点有什么想法吗
  • 如何在 Node.js Express 中检查会话?

    我尝试检查 Express 4 中的会话是否存在 if req session user undefined 它给了我错误 Cannot read property user of undefined 如何检查会话中是否存在值 来自sour
  • Python 类中的属性是否共享? [复制]

    这个问题在这里已经有答案了 下面的代码让我很困扰 class mytest name test1 tricks list def init self name self name name self tricks name self tri
  • P_SHA1算法在PHP中的实现

    我们正在尝试实现一个函数 P SHA1 意味着 PHP 用 Python 编写的函数的模式 但不幸的是 有些东西无法正常工作 JAVA中的实现函数如下 http ws apache org wss4j xref org apache ws
  • .wav 从 AVAssetWritter ios 转换为任何压缩形式

    那么我现在面临的问题是尺寸问题 我允许用户从他们的库中选择一首歌曲 然后将其切成碎片 然后能够在启用文件共享的情况下在计算机上使用 wav 或 mp3 文件 基本上我正在使用以下 AVAssetWritter 选项 并且我不断收到一个巨大的
  • ggplot2:仅显示一组中的文本标签

    我的设置 我有一些篮球运动员和他们的统计数据 library tidyverse df lt tibble season c 2010 2011 2012 2013 2014 2010 2011 2012 2013 2014 player
  • 使用 XmlSerializer 的多个命名空间

    这是场景 我有嵌套类 需要在 xml 文档中序列化 XmlRoot Namespace http www foo bar myschema public class root XmlAttribute public string versi