You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将自定义XML处理指令映射至CLR类型?

自定义XML处理指令到CLR类型的映射方案

XML中的<?code MySimpleCode?>属于XML处理指令(Processing Instruction),可以通过.NET的XmlSerializer直接映射到CLR类型,以下是两种可行的实现方式:

方式一:完整映射处理指令(保留目标名和内容)

使用.NET内置的XmlProcessingInstruction类型配合XmlProcessingInstructionAttribute特性,完整保留处理指令的所有信息:

[XmlRoot(ElementName = "root")]
public class Root
{
    // 特性参数需与处理指令的目标名(<?code ...?>中的"code")完全一致
    [XmlProcessingInstruction("code")]
    public XmlProcessingInstruction Code { get; set; }
}
  • XmlProcessingInstruction类型包含两个核心属性:
    • Target:对应处理指令的目标名(示例中为code)
    • Data:对应处理指令的内容(示例中为MySimpleCode)

方式二:仅映射处理指令内容(简化版)

如果只需要获取处理指令的内容部分,可以直接使用string类型,特性仍使用XmlProcessingInstructionAttribute:

[XmlRoot(ElementName = "root")]
public class Root
{
    [XmlProcessingInstruction("code")]
    public string CodeContent { get; set; }
}

这种情况下,CodeContent属性的值会直接对应MySimpleCode,无需额外解析。

反序列化示例

以第一种方式为例,反序列化给定XML的代码如下:

var xmlContent = @"<?xml version=""1.0"" encoding=""UTF-8""?>
<root>
  <?code MySimpleCode?>
</root>";

var serializer = new XmlSerializer(typeof(Root));
using var stringReader = new StringReader(xmlContent);
var rootObj = (Root)serializer.Deserialize(stringReader);

// 输出处理指令的目标名和内容
Console.WriteLine(rootObj.Code.Target); // 输出: code
Console.WriteLine(rootObj.Code.Data); // 输出: MySimpleCode

内容的提问来源于stack exchange,提问作者Ruslan Kudaybergenov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 01:37:11