下面讲述根据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示例是:

<Response>
<APIVersion>1.0</APIVersion>
<Authenticated>true</Authenticated>
<Global>
<SoftwareUpgrade>
<Enabled>false</Enabled>
<Version/>
<URL/>
<Rule/>
<RetryInterval>3600</RetryInterval>
</SoftwareUpgrade>
<Provisioning>
<Enabled>true</Enabled>
<URL>https://eeee.cn</URL>
<Interval>86400</Interval>
</Provisioning>
<Phonebook>
<Enabled>true</Enabled>
<URL>https://ffff.com</URL>
</Phonebook>
</Global>
<SIP>
<Line1>
<DisplayName>Terr</DisplayName>
<URI>5538769</URI>
<PreferredURI>for@abc.com</PreferredURI>
<AuthName>5530769</AuthName>
<Password>1sPU</Password>
<Transport>TCP</Transport>
<Mailbox>
123
</Mailbox>
<Port>7899</Port>
<Proxy>
<AutoMode>off</AutoMode>
<Proxy1>proxy</Proxy1>
<Proxy2/>
</Proxy>
</Line1>
</SIP>
</Response>

  

xsd解析xml的更多相关文章

  1. 使用HttpClient 发送get、post请求,及其解析xml返回数据

    一.关于HttpClient的使用: 可以参考这个博客地址,这里有详细的介绍,需要的可以先看一下: 地址是:http://blog.csdn.net/wangpeng047/article/detai ...

  2. xml语法、DTD约束xml、Schema约束xml、DOM解析xml

    今日大纲 1.什么是xml.xml的作用 2.xml的语法 3.DTD约束xml 4.Schema约束xml 5.DOM解析xml 1.什么是xml.xml的作用 1.1.xml介绍 在前面学习的ht ...

  3. Java 解析 XML

    Java 解析 XML 标签: Java基础 XML解析技术有两种 DOM SAX DOM方式 根据XML的层级结构在内存中分配一个树形结构,把XML的标签,属性和文本等元素都封装成树的节点对象 优点 ...

  4. java解析XML四种方法

    XML现在已经成为一种通用的数据交换格式,平台的无关性使得很多场合都需要用到XML. XML现在已经成为一种通用的数据交换格式,它的平台无关性,语言无关性,系统无关性,给数据集成与交互带来了极大的方便 ...

  5. 详解Java解析XML的四种方法

    XML现在已经成为一种通用的数据交换格式,它的平台无关性,语言无关性,系统无关性,给数据集成与交互带来了极大的方便.对于XML本身的语法知识与技术细节,需要阅读相关的技术文献,这里面包括的内容有DOM ...

  6. spring中解析xml

    解析xml有SAX,Stax,dom等方式,那么spring中是如何解析xml文件的呢? Document doc = this.documentLoader.loadDocument( inputS ...

  7. 【Java】详解Java解析XML的四种方法

    XML现在已经成为一种通用的数据交换格式,平台的无关性使得很多场合都需要用到XML.本文将详细介绍用Java解析XML的四种方法. AD: XML现在已经成为一种通用的数据交换格式,它的平台无关性,语 ...

  8. xml--通过DOM解析XML

    此文章通过3个例子表示DOM方式解析XML的用法. 通过DOM解析XML必须要写的3行代码. step 1: 获得dom解析器工厂(工作的作用是用于创建具体的解析器) step 2:获得具体的dom解 ...

  9. Java中解析XML的四种方法

    XML现在已经成为一种通用的数据交换格式,它的平台无关性,语言无关性,系统无关性,给数据集成与交互带来了极大的方便.对于XML本身的语法知识与技术细节,需要阅读相关的技术文献,这里面包括的内容有DOM ...

随机推荐

  1. 推荐一个Java设计模式写的很好的博客

    博客地址:https://quanke.gitbooks.io/design-pattern-java/%E9%9D%A2%E5%90%91%E5%AF%B9%E8%B1%A1%E8%AE%BE%E8 ...

  2. 初识Qgis

    折腾了一天,qgis终于能在跟了自己8年的本本上顺利打开了,官网先后下载了3.8和3.4版本的都出现了同样的问题,"could not load qgis_app.dll",goo ...

  3. UpdateLayeredWindow与SetLayeredWindowAttributes

    首先使用透明之前必须设置该窗口为层级窗口,即增加窗口的扩展风格WS_EX_LAYERED,增加的时候最好使用GetWindowlong获取Ex风格,然后加入后在SetWindowLong设置,最好不适 ...

  4. C++Builder常用函数

    BCB函数集 1.内存分配     函数名称 AllocMem 函数说明 在队中分配指定字节的内存块,并将分配的每一个字节初始化为 0.函数原型如下: void * __fastcall AllocM ...

  5. linux下phpstudy安装

    linux下phpstudy安装 一.总结 一句话总结: 就是下载然后一步步用指令安装即可 二.linux下phpstudy安装 参考:linux下phpstudy安装https://www.cnbl ...

  6. Android Support Library 学习入门

    0. 文前闲话 作为一个由原生桌面应用程序开发者(VC.Delphi)转行的Android菜鸟,虐心的事真是数不胜数:安装个开发工具下载个SDK需要整整一夜:早晨一上班点开Android Studio ...

  7. Spark 读写数据、抽象转换 拾遗

    读 package com.test.spark import org.apache.spark.sql.{Dataset, Row, SaveMode, SparkSession} /** * @a ...

  8. MME、PGW、SGW和PCRF的介绍

    1.简介原文连接:https://blog.csdn.net/Rong_Toa/article/details/94983607 用户面和控制面板分离2.什么是HSS?HSS有什么主要功能?HSS与H ...

  9. day3:python运算符及数据类型(str)(int)

    运算符 算数运算 :a = 10 * 10赋值运算:a = a + 1 a+=1 比较运算:a = 1 > 5 逻辑运算: a = 1>6 or 1==1   a = 1 and b = ...

  10. 对倾斜的图像进行修正——基于opencv 透视变换

    这篇文章主要解决这样一个问题: 有一张倾斜了的图片(当然是在Z轴上也有倾斜,不然直接旋转得了o(╯□╰)o),如何尽量将它纠正到端正的状态. 而要解决这样一个问题,可以用到透视变换. 关于透视变换的原 ...