xsd解析xml

下面讲述根据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</URL>
      <Interval>86400</Interval>
    </Provisioning>
    <Phonebook>
      <Enabled>true</Enabled>
      <URL>https://ffff</URL>
    </Phonebook>
  </Global>
  <SIP>
    <Line1>
      <DisplayName>Terry Tang</DisplayName>
      <URI>553870769</URI>
      <PreferredURI>[email protected]</PreferredURI>
      <AuthName>553870769</AuthName>
      <Password>cJFZZjUsPU</Password>
      <Transport>TCP</Transport>
      <Mailbox>
        123
      </Mailbox>
      <Port>5060</Port>
      <Proxy>
        <AutoMode>off</AutoMode>
        <Proxy1>proxy.infocus.net</Proxy1>
        <Proxy2/>
      </Proxy>
    </Line1>
  </SIP>
</Response>

  

xsd解析xml

时间: 2024-11-09 12:56:44

xsd解析xml的相关文章

[C#]记一次解析XML转对象的笔记

项目中调用第三方API,返回格式是XML字符串,需要将XML反序列化为对象,格式如下: 1 <?xml version="1.0"?> 2 <Response xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" totalCount="123" resultCode

Java中解析XML的四种方法

XML现在已经成为一种通用的数据交换格式,它的平台无关性,语言无关性,系统无关性,给数据集成与交互带来了极大的方便.对于XML本身的语法知识与技术细节,需要阅读相关的技术文献,这里面包括的内容有DOM(Document Object Model),DTD(Document Type Definition),SAX(Simple API for XML),XSD(Xml Schema Definition),XSLT(Extensible Stylesheet Language Transform

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介绍 在前面学习的html语言,html是超文本标记语言,使用html语言规定好的标签来封装文本数据.而html使用的标签html语言规定好的,每个标签都有自己特定的功能. xml语言,可扩展的标记语言,这门语言它没有定义任何的标记,而标记是由使用者自己来定义,但是由于标签名称以及属性名称都由用户自己来命名,导致别人在使

java使用dom4j解析xml

目标:将指定XML进行解析,以键=值的方式返回指定节点下的数据 所需要的jar包:dom4j1.6.1.jar.jaxen-1.1.jar <?xml version="1.0" encoding="UTF-8"?> <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:SOAP-ENC="http://s

xmlbeans解析XML文件全流程+Altova XMLSpy破解

xmlbeans解析XML详细介绍的说明很多,官方也有很多参考,不多废话,主要流程如下: </pre><p>1. 下载 xmlbean 文件 <a target=_blank href="http://download.csdn.net/detail/q119909033/8813173">官方或者直接点击</a></p><p>2. 根据XML生成<span style="font-family:M

spring中解析xml

解析xml有SAX,Stax,dom等方式,那么spring中是如何解析xml文件的呢? Document doc = this.documentLoader.loadDocument( inputSource, getEntityResolver(), this.errorHandler, validationMode, isNamespaceAware()); spring中采用的DOM的方式,所要做的一切就是得到org.w3c.dom.Document对象 上面的documentLoade

Java 解析 XML

Java 解析 XML XML解析技术有两种 DOM SAX DOM方式 根据XML的层级结构在内存中分配一个树形结构,把XML的标签,属性和文本等元素都封装成树的节点对象 优点: 便于实现增 删 改 查 缺点: XML文件过大可能造成内存溢出 SAX方式 采用事件驱动模型边读边解析:从上到下一行行解析,解析到某一元素, 调用相应解析方法 优点: 不会造成内存溢出, 缺点: 查询不方便,但不能实现 增 删 改 不同的公司和组织提供了针对DOM和SAX两种方式的解析器 SUN的jaxp Dom4j

解析XML技术

转载:http://developer.51cto.com/art/200903/117512.htm XML现在已经成为一种通用的数据交换格式,它的平台无关性,语言无关性,系统无关性,给数据集成与交互带来了极大的方便.对于XML本身的语法知识与技术细节,需要阅读相关的技术文献,这里面包括的内容有DOM(Document Object Model),DTD(Document Type Definition),SAX(Simple API for XML),XSD(Xml Schema Defin

Jaxb解析XML

传统方式下,我们都是通过dom4j或者jdom方式来解析xml,一般都是将整个xml解析成内存中的document,再分层次遍历document树,这样有以下几个不好的地方,首先是占内存,还有就是代码死板,不能针对通用的xml进行解析,但是Jaxb却不一样,可以针对任何类型的xml进行解析,即使xml发生改变,可以只用该少量的代码,而不用更改代码逻辑,具体方法如下: 1,生成xsd 首先,我们按照现有的xml文件生成改文件对应的xsd文件,方法是采用xsd.exe方式,这个exe文件由微软提供,