如何在自定义 XML 序列化方法中使用默认 XML 序列化

2024-03-01

我在 .NET 中有一个实现 IXmlSerialized 的类。我想序列化它的属性,但它们可能是复杂的类型。这些复杂类型与 XML 序列化兼容,但它们本身不实现 IXmlSerialized。从我的 ReadXml 和 WriteXml 方法中,如何调用传递给我的 XmlReader/XmlWriter 上的默认读/写逻辑。

也许代码会让我更清楚我想要什么:

public class MySpecialClass : IXmlSerializable
{
    public List<MyXmlSerializableType> MyList { get; set; }

    System.Xml.Schema.XmlSchema IXmlSerializable.GetSchema()
    {
        return null;
    }

    void IXmlSerializable.ReadXml(System.Xml.XmlReader reader)
    {
        //  Read MyList from reader, but how?
        //  Something like this?
        //  MyList = (List<MyXmlSerializableType>)
            reader.ReadObject(typeof(List<MyXmlSerializableType>));
    }

    void IXmlSerializable.WriteXml(System.Xml.XmlWriter writer)
    {
        //  Write MyList to writer, but how?
        //  Something like this?
        //  writer.WriteObject(MyList)

    }
}

对于编写器,您只需为 MySerializedType 创建一个 XmlSerializer,然后通过它将列表序列化给您的编写器。

void IXmlSerializable.WriteXml(System.Xml.XmlWriter writer)
{
    // write xml decl and root elts here
    var s = new XmlSerializer(typeof(MySerializableType)); 
    s.Serialize(writer, MyList);
    // continue writing other elts to writer here
}

读者也可以采用类似的方法。EDIT:要只读取列表,并在列表完成后、流结束之前停止读取,需要使用读取子树 http://msdn.microsoft.com/en-us/library/system.xml.xmlreader.readsubtree.aspx(马克·格拉维尔出品)。

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

如何在自定义 XML 序列化方法中使用默认 XML 序列化 的相关文章

  • 未找到 Boost 库,但编译正常

    我正在尝试在 C 中使用 boost 的文件系统 使用时看起来编译没问题 c c Analyse c o Analyse o g W Wall L usr local lib lboost filesystem lboost system
  • 循环遍历 C 结构中的元素以提取单个元素的值和数据类型

    我有一个要求 我有一个 C 语言的大结构 由大约 30 多个不同数据类型的不同元素组成 typedef struct type1 element1 type2 element2 type3 element3 type2 element4 1
  • 从复选框列表中选择循环生成的复选框中的一个复选框

    抱歉我的英语不好 在我的 ASP NET 网站上 我从 SQL 表导入软件列表 看起来像这样 但实际上要长得多 Microsoft Application Error Reporting br br Microsoft Applicatio
  • 有些有助于理解“产量”

    在我不断追求少吸的过程中 我试图理解 产量 的说法 但我不断遇到同样的错误 someMethod 的主体不能是迭代器块 因为 System Collections Generic List 不是迭代器接口类型 这是我被卡住的代码 forea
  • Task.Run 作为反模式?

    我正在将 SQLite NET PCL 库用于我的 WinRT 项目SQliteAsyncConnection类 它提供经典的异步版本SQLiteConnection方法 然而 就该项目而言Github页面 https github com
  • 语音识别编程问题入门

    所以 你们可能都看过 钢铁侠 其中托尼与一个名为贾维斯的人工智能系统进行交互 演示剪辑here http www youtube com watch v Go8zsh1Ev6Y 抱歉 这是广告 我非常熟悉 C C 和 Visual Basi
  • 如何使用 ASP.NET Core 获取其他用户的声明

    我仍在学习 ASP NET Core 的身份 我正在进行基于声明的令牌授权 大多数示例都是关于 当前 登录用户的 就我而言 我的 RPC 服务正在接收身份数据库中某个用户的用户名和密码 我需要 验证是否存在具有此类凭据的用户 获取该用户的所
  • 获取没有显式特征的整数模板参数的有符号/无符号变体

    我希望定义一个模板类 其模板参数始终是整数类型 该类将包含两个成员 其中之一是类型T 另一个作为类型的无符号变体T 即如果T int then T Unsigned unsigned int 我的第一直觉是这样做 template
  • 从网页运行 ClickOnce 应用程序,无需用户操作

    我们有一个基于 Java 的 Web 应用程序以及用 C 编写的相同应用程序 如果 java 检查器发现客户端计算机上没有安装 Java 则应该运行该应用程序 这个想法是运行 C 单击一次 http en wikipedia org wik
  • C++ - 多维数组

    处理多维数组时 是否可以为数组分配两种不同的变量类型 例如你有数组int example i j 有可能吗i and j是两种完全不同的变量类型 例如 int 和 string 听起来您正在寻找 std vector
  • 将二变量 std::function 转换为单变量 std::function

    我有一个函数 它获取两个值 x 和 y 并返回结果 std function lt double double double gt mult double x double y return x y 现在我想得到一个常量 y 的单变量函数
  • 将函数参数类型提取为参数包

    这是一个后续问题 解包 元组以调用匹配的函数指针 https stackoverflow com questions 7858817 unpacking a tuple to call a matching function pointer
  • 如何最好地以编程方式将 `__attribute__ ((unused))` 应用于这些自动生成的对象?

    In my makefile我有以下目标 它将文本 HTML 资源 编译 为unsigned char数组使用xxd i http linuxcommand org man pages xxd1 html 我将结果包装在匿名命名空间和标头保
  • 比较:接口方法、虚方法、抽象方法

    它们各自的优点和缺点是什么 接口方法 虚拟方法 抽象方法 什么时候应该选择什么 做出这一决定时应牢记哪些要点 虚拟和抽象几乎是一样的 虚方法在基类中有一个实现 可以选择重写 而抽象方法则没有 并且must在子类中被覆盖 否则它们是相同的 在
  • 将 Lambda 表达式树与 IEnumerable 结合使用

    我一直在尝试了解有关使用 Lamba 表达式树的更多信息 因此我创建了一个简单的示例 这是代码 如果作为 C 程序粘贴到 LINQPad 中 它可以工作 void Main IEnumerable
  • 从共享网络文件夹运行的 .NET 应用程序的性能损失

    从共享网络文件夹运行 NET 4 0 应用程序是否有任何性能损失 我发现哪个应用程序启动速度较慢 但 在使用时没有注意到任何变慢 但不确定 当通过网络运行可执行文件时 Windows 不会在应用程序启动时通过网络传输整个应用程序 这样做是为
  • 代码中的.net Access Forms身份验证“超时”值

    我正在向我的应用程序添加注销过期警报 并希望从我的代码访问我的 web config 表单身份验证 超时 值 我有什么办法可以做到这一点吗 我认为您可以从 FormsAuthentication 静态类方法中读取它 这比直接读取 web c
  • 如何在 sql azure 上运行 aspnet_regsql? [复制]

    这个问题在这里已经有答案了 可能的重复 将 ASP NET 成员资格数据库迁移到 SQL Azure https stackoverflow com questions 10140774 migrating asp net membersh
  • 是否允许全局静态标识符以单个 _ 开头?

    换句话说 可能static 文件范围 全局变量恰好以一个下划线开头 而不会产生与 C 实现发生名称冲突的可能性 https www gnu org software libc manual html node Reserved Names
  • 如何在 C 中将 char 连接到 char* ?

    我怎样才能前置char c to char myChar 我有c值为 A and myChar值为 LL 我怎样才能前置c to myChar使 ALL 这应该有效 include

随机推荐

  • 当我们在java中使用连接两个字符串对象时编译器如何工作

    class Simple public static void main String args String s Sachin Tendulkar System out println s Sachin Tendulkar 编译器将其转换
  • 将逻辑放入 ViewModel get'ers 中

    您如何看待将 Get logic 放入 ViewModel 的 getter 中 就像是 public class DummyViewModel public int Id get set private DummyObject myObj
  • 具有凭据的 WebClient 仍未下载文件

    我正在尝试使用用户名 密码从网站下载文件 您需要支付注册帐户的费用才能下载文件 我们已经这样做了 我尝试传入用户名 密码并下载文件 如下所示 if docUrl null if string IsNullOrEmpty username s
  • HashCode 给出负值

    我通过执行以下函数将传入字符串转换为哈希码 但某些值是负数 我认为哈希值不应该是负数 请告诉我我做错了什么 int combine srcadd dstadd sourceport destinationport protocol hash
  • 如何在 TypeScript 中创建类似枚举的类型?

    我正在为 TypeScript 的 Google 地图 API 编写定义文件 我需要定义一个类似枚举的类型 例如 google maps Animation其中包含两个属性 BOUNCE and DROP 在 TypeScript 中应该如
  • 解析错误:语法错误,php 中出现意外的 T_STRING

    我收到错误
  • 放大“无法验证客户端的秘密哈希”

    我们一直在使用 Amplify 和 Cognito 为部署到 Lambda 的 Angular6 应用程序注册用户 客户希望从电子邮件过渡到用户名作为主要用户标识 所以我们创建了一个新的用户池 客户端 我看不到配置设置 我只是获得了新的用户
  • 如何使用java读取Json中的所有键而不指定键名

    尝试读取 Json 消息 如下所示 employees firstName John lastName Doe firstName Anna lastName Smith firstName Peter lastName Jones 我想读
  • 转换 Observable 中的数据

    我正在从我的 Angular 服务上的 Observable 中检索项目列表 在每个项目中 我都有一个包含主题列表的数组 对于每个主题 我都需要再次调用以获取其详细信息 例如名称 描述等 数据结构 post1 subjects books
  • C 是否有通用的“指向指针的指针”类型?

    例如 如果我想编写一个将指针清空的 free 我可以编写如下内容 void myfree void data free data data NULL 但是 当我尝试编写此内容时 我收到编译器警告 来自 gcc 4 6 2 warning p
  • 同步引用完整性表和枚举

    我经常思考这个问题 所以想请教一下大家 假设我有一个如下所示的数据库表 Table Visibility Id Value 0 Visible 1 Invisible 2 Collapsed 这只是一个用于确保引用完整性的表 它基本上是存储
  • 检查其他用户是否有写入文件的权限

    在安装过程中 我需要检查用户提供的路径是否对指定用户可写 执行Setup exe 仅适用于Windows的软件 的用户可能无法写入路径 像 fileserver share这样的UNC路径 所以我认为如何检查写入目录或文件的权限 https
  • 如何根据RSA的公开指数和模生成DER/PEM证书?

    众所周知 公钥由公共指数和模数组成 我的问题是 如何根据RSA的公开指数和模生成DER PEM证书 预先非常感谢您 有了公共指数和模数 您最希望得到的结果是 BEGIN PUBLIC KEY MIGGAoGAfHlcdrcuOK6C02rb
  • NSDictionaryController 似乎没有观察到内容字典的更改

    我一定错过了一些简单的东西 但是我在将 tableView 绑定到 NSDictionaryController 时遇到了一些麻烦 这是我当前方案的模型 TableViewColumn bindsTo gt DictionaryContro
  • cURL 到 C# web 请求

    我正在尝试将 cURL 脚本转换为 C 脚本 如果我想发布图像 是否必须将其转换为字符串 当我尝试运行脚本时 我从目标计算机收到异常 不幸的是 我无权查看目标机器上的代码 ch curl init curl setopt ch CURLOP
  • 在android fb graph api中获取空响应

    我一直在尝试使用fb graph api但是reponse我得到的是null当我尝试在我的 Android 应用程序中获取页面的帖子时 我正在尝试从我使用过的 ID 页面获取页面提要 我希望得到包含提要的图形响应 但我有一个null res
  • matplotlib 中 Poly3DCollection 图的透明度

    我正在尝试使用 Python 的神奇 Matplotlib 包绘制一些对象 这些对象由实现的点组成plt scatter 和补丁实现Poly3DCollection 我希望补丁具有轻微的透明度 以便可以看到补丁后面的点和边缘 这是我已经生成
  • Spring 3 MVC Controller集成测试-将Principal注入到方法中

    作为 Spring 3 MVC 的一部分 可以将当前登录的用户 原理 对象注入到控制器方法中 E g Controller public class MyController RequestMapping value update meth
  • Linux、waitpid、WNOHANG、子进程、僵尸

    我作为守护进程运行我的程序 父进程只等待子进程 当子进程意外死亡时 再次fork并等待 for 1 if fork 0 break int sig 0 for 1 usleep 10000 pid t wpid waitpid g gt p
  • 如何在自定义 XML 序列化方法中使用默认 XML 序列化

    我在 NET 中有一个实现 IXmlSerialized 的类 我想序列化它的属性 但它们可能是复杂的类型 这些复杂类型与 XML 序列化兼容 但它们本身不实现 IXmlSerialized 从我的 ReadXml 和 WriteXml 方