C#实现XML系列化和反系列化的总结
常用的系列化定义(using System.Xml.Serialization;)
[XmlAttribute("name")] // 定义<Tag name="…"></Tag>
[XmlElement("label")] // 定义<label>…</label>
[XmlIgnoreAttribute()] // 跳过系列化
[XmlElement("description", IsNullable = false)] // 定义<description>…</description>,在属性值为null时不显示该元素,即可选
[XmlArray("temp_var_list", IsNullable=false)] // 定义<temp_var_list><Tag>…</Tag>…<Tag>…</Tag></temp_var_list>,即数组对象的根结点
[XmlArrayItem("temp_var_item")] // 定义<temp_var_item>…</temp_var_item>…<temp_var_item>…</temp_var_item>,即数据元素的根结点,常与XmlArray组合使用
[XmlRoot("dpd")] // 定义要结点
几个注意事项
(1)需序列化的字段必须是公共的(public)
(2)需要序列化的类都必须有一个无参的构造函数
(3)枚举变量可序列化为字符串,无需用[XmlInclude]
(4)导出非基本类型对象,都必须用[XmlInclude]事先声明。该规则递归作用到子元素
如导出ArrayList对象,若其成员是自定义的,需预包含处理:
using System.Xml.Serialization;
[XmlInclude(typeof(自定义类))]
(5)Attribute中的IsNullable参数若等于false,表示若元素为null则不显示该元素。
也就是说:针对值类型(如结构体)该功能是实效的
若数组包含了100个空间,填充了10个类对象,则序列化后只显示10个节点
若数组包含了100个空间,填充了10个结构体对象,则序列化后会显示100个节点
(6)真正无法XML序列化的情况
某些类就是无法XML序列化的(即使使用了[XmlInclude])
IDictionary(如HashTable)
System.Drawing.Color
System.Drawing.Font
SecurityAttribute声明
&
相关文档:
<?xml version="1.0" encoding="UTF-8"?>
<company>
<tel>020-12345678-66</tel>
<tel>020-12345678-85</tel>
<introduce>
<![CDATA[
<br/><h1>公司简介& ......
趁周末想折腾一下嵌入ASP.NET的WinForm程序
需要用到WebBrowser控件的HTML源码读写
就把以前的一些代码片断移值到C#下
顺便发个帖子备忘,呵呵
思路其实很简单,直接通过document.documentElement.outerHTML
或者使用IPersistStreamInit接口直接对流进行处理
前者我就不废话了,后者实现方法如下
&nbs ......
XML是门学问。要学的话。也需要用心。
简单的了解下。。
例子:所有节点字段几乎自己构造。
<?xml version="1.0" encoding="utf-8" ?><!--这个是标识。。指定版本。。指定编码读写>
<ShowList>
<Movie>
<Name>功夫</Name>
<Poster>gongfu. ......
XML文件作为数据数据存储介质的一种,好处在于:任何的系统均可以解析它。
XML全称:Extensible Markup Language(扩展标记语言)使用文档类型定义(DTD)或者模式(Schema)来描述数据的。可供人阅读,而且还基于一种公共的开发标准。
最近由于开发的需要,也是研究以下XML的操作,本篇日志主要总结C#.NET中是如何操作XM ......
最近看到了一个项目解析xml的方式,觉得也不错,测试下跟大家分享下!眼下解析xml的方式很多,这里不提了!只谈谈digester的使用,浅谈吧!希望以后你们遇到了能有点帮助吧!
首先在使用Digester解析xml时要导入2个jar包,有的人说是4个� ......