下面讲述根据xml生成对应序列化反序列化类的过程,xml需要首先转化为xsd,然后再生成为实体类。其中,XSD是XML Schema Definition的缩写。
1.拥有一个xml文件
2.打开vs的command line:
xsd *.xml ,执行这个命令 是通过xml文件生成xsd文件,xsd文件将生成在当前命令目录下。
xsd *.xsd /classes 是通过xsd文件生成xml的解析类,cs文件。示例顺便指定了命名空间为Test
这样就可以把cs文件放到项目中去使用了,这个cs文件就是xml对应的解析类。
PS :xsd自动解析的文件不知道每个节点是不是唯一的还是有多个。如果需要指定某节点是唯一的,可以在生成xsd文件之后,把xsd文件放到vs中,
使用xml(Text) editor 方式打开,然后指定maxOccurs="1",这样就指定了当前节点为唯一一个了。maxOccurs="unbounded",表明xml节点可以有很多个。 这样再把修改的xsd使用xsd *.xsd /classes 命令生成cs文件,或许更满足你的需求。
3. 解析 xml
static void Main(string[] args)
{
try
{
XmlSerializer ser = new XmlSerializer(typeof(Response));
//读取xml进行解析
FileStream fs = new FileStream(@"D:\a.xml", FileMode.Open);
Response response = ser.Deserialize(fs) as Response;
response.SIP.Line1.Port = "9999";
fs.Close();
//修改xml并保存
fs = new FileStream(@"D:\a.xml", FileMode.Open, FileAccess.Write);
ser.Serialize(fs, response);
fs.Close();
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
其中Response是我xml的首节点。
附加:
我的xml示例是:
1.0
true
false
3600
true
https://eeee.cn
86400
true
https://ffff.com
Terr
5538769
for@abc.com
5530769
1sPU
TCP
123
7899
off
proxy