当前位置: 首页 > article >正文

vs 2022 中xml 粘贴为Class 中,序列化出来的xml 的使用

上图是visual studio 2022 中使用的粘贴功能的菜单位置

在生成的xml 中,有些是类似如下类型的

[System.Serializable]
[System.Xml.Serialization.XmlType]
public class Item
{
    private bool isVisibleField;

    private bool isVisibleFieldSpecified;

    [System.Xml.Serialization.XmlElement]
    public bool isVisible
    {
        get => isVisibleField;
        set => isVisibleField = value;
    }

    [System.Xml.Serialization.XmlIgnore]
    public bool isVisibleSpecified
    {
        get => isVisibleFieldSpecified;
        set => isVisibleFieldSpecified = value;
    }
}

从图中可以看到有IsVisible 、IsVisibleSpecified  两个,而实际的xml 中其实只有IsVisible 属性,那么为什么会出现IsVisibleSpecified 呢?这是因为标识这个IsVisible 属性是可选的属性。所以在

对这个属性进行序列化的时候,要注意,设置值的时候需要给IsVisibleSpecified 设置值,给IsVisible 属性设置值的化,在类序列化为xml 的时候,是没有效果的。

下边是一个列子,可以直观的看出来效果

using System;
using System.IO;
using System.Xml.Serialization;

public class Program
{
    public static void Main()
    {
        Item item = new Item
        {
            isVisible = true,
            isVisibleSpecified = true  // Include in XML
        };

        XmlSerializer serializer = new XmlSerializer(typeof(Item));

        using (StringWriter writer = new StringWriter())
        {
            serializer.Serialize(writer, item);
            Console.WriteLine(writer.ToString());
        }

        // Example: Omitting the "isVisible" element
        item.isVisibleSpecified = false;

        using (StringWriter writer = new StringWriter())
        {
            serializer.Serialize(writer, item);
            Console.WriteLine(writer.ToString());
        }
    }
}

[Serializable]
public class Item
{
    private bool isVisibleField;

    private bool isVisibleFieldSpecified;

    [XmlElement]
    public bool isVisible
    {
        get => isVisibleField;
        set => isVisibleField = value;
    }

    [XmlIgnore]
    public bool isVisibleSpecified
    {
        get => isVisibleFieldSpecified;
        set => isVisibleFieldSpecified = value;
    }
}

本文主要是让自己对这个问题有所记录。 


http://www.kler.cn/a/467782.html

相关文章:

  • 【知识协作工具】confluence、zentao、ONLYOFFICE、kooteam、cloudreve
  • 《C++11》各种初始化方式的详细列举与对比
  • REVERSE-COMPETITION-CCSSSC-2025
  • ansible-性能优化
  • SQL中聚类后字段数据串联字符串方法研究
  • ESP8266+STM32+阿里云保姆级教程(AT指令+MQTT)
  • 九进制转10进制
  • Git 如何在IDEA中进行使用
  • SAP系统中的标准价、移动平均价是什么?有何区别?物料分类账的优点
  • 基于开发/发布/缺陷分离模型的 Git 分支管理实践20250103
  • Day3 微服务 微服务保护(请求限流、线程隔离、服务熔断)、Sentinel微服务保护框架、分布式事务(XA模式、AT模式)、Seata分布式事务框架
  • 【Redis经典面试题十】热key与大key的问题如何解决?
  • 简述 Spring 的 控制反转(IoC) 和 依赖注入(DI)
  • css 页面组件遮挡
  • 【从零开始入门unity游戏开发之——C#篇42】C#补充知识——随机数(Random)、多种方法实现string字符串拼接、语句的简写
  • 我用AI学Android Jetpack Compose之理解声明式UI
  • Jmeter-性能测试工具的安装教程
  • 计算机网络知识总结-网络安全
  • 如何单独安装 MATLAB 工具箱
  • 三甲医院等级评审八维数据分析应用(五)--数据集成与共享篇
  • 在swiftui中使用Alamofire发送请求获取github仓库里的txt文件内容并解析
  • 芯片引脚类型检测数据集VOC+YOLO格式582张5类别
  • 【小程序】5分钟快速入门抓包微信小程序
  • 短信通知在 IOS 17/18 中不起作用?这是修复方法
  • Scala_【4】流程控制
  • 封装的作用