Tag Archives: xml

php读取和操作xml的方式以及simpleXml扩展

php读取和操作xml的方式还很多的,从网上找了一些,做个总结,明天一一试下。

1.试用DOM库

DOM会把整个xml文件读入内存,然后用节点树来表示它,php内置了一个DOMdocument的类,它继承于DOMNode类,相关详细介绍在这儿

DOMdocument有一个很健全的功能,包括属性创建(createAttribute),创建新的注释节能(createComment),创建新的元素节点(createElement),创建文本节点(createNode),当然了,有很多比较细的创建方法,读取的话,一般是先载入(DOMdocument::load)xml文件,然后可以通过id属性(DOMdocument::getElementById)或者通过标签名称(DOMdocuemnt::getElementByTagName)来获取指定的元素。也可以用前面创建的子节点,导入(DOMdocuemnt::importNode)到已经load的xml文档。

当然了,DOMdocument也有一系列的属性,不一一说了。

2.simpleXml

官方的解释说是:它是一个很简单的并且易用的拓展,能够将xml文档转换成一个更加容易被迭代和选择的对象。

娘的,我en文水平确实渣,慢慢硬着头皮看吧。反正大概的意思就是有了它,我们可以更好的操作xml文档了。

安装要求

1.php版本要高于是php5以后的,以前的是不支持的。

2.并且还需要先启动一个叫libxml的拓展,不然也安装不了simplexml。libxml默认是已经启用了的。

安装

其实它simplexml启动的,除非你丫显得蛋疼去禁止它。但是在5.1.2以前的版本是需要手动去启动的,这对于虚拟空间的用户是多么的蛋疼啊,并且无需配置。

simplexml包括两部分,一个是SimpleXMLElement的类,一个simpleXML的一些内置的方法。SimpleXMLElement主要是操作xml文档的元素的。

第一步一般是解析xml文档

有一个名为simple_load_file的函数能够解析xml文档,但是simple一般是远程解析,本地的也能解析,它的返回值并不是整个xml文档,而是根元素。

唉,在床上真是不方便,明天实际去操作后,再深入的比较下,再补充吧,真蛋疼。

XML的DOM以及解析器

本来想先去了解了解simpleXml的,一个可以更加轻松用php访问xml的东东,而且ibm的官网上也有比较好的文档,想想还是先再了解了解xml本身比较好。

DOM,也就是文档对象模型,我再学习JavaScript的时候很是纠结这个东西。XML DOM是一套定义访问和操作XML文档的标准方法,DOM把XML看做一个文档树,并且能通过DOM树来访问XML文档里面的所有元素。这个怎么说呢,跟HTML类似吧,都是看做文档树。

DOM提供了一系列的方法使之可以访问,操作xml文档,到时候有时间去看看教程。

xml解析器

大多数浏览器都有读取和操作xml的内建xml解析器,解析器会把xml文档转换成JavaScript可以访问的对象。

了解即可。

XML的属性以及XML的验证

XML的元素可以在开始标签中包含属性,跟HTML的标签类似,以便为元素提供一些额外的信息。XML的属性值必须加上引号,一般用双引号或者单引号都可以。

在XML中,属性一般都可以用子元素代替,貌似W3C建议尽量试用子元素而不是属性,一般如果信息感觉像数据,试用子元素吧。

XML属性是无法包含多重值的,子元素可以,也无法描述XML文档的树状结构,不容易扩展,不容易维护。众多原因之下,一般使用子元素要好点。

一个比较好的XML文档应该是有根元素的,且必须每隔标签都有关闭标签,良好的大小写和命名,正确的嵌套,属性的值也都使用引号。

如果符合上面的要求,并且也遵从DTD的语法规则,DTD的作用就是定义XML文档的结构。

XML文档中的错误会终止XML程序,所以在使用XML之前应该检测一下XML文档的正确性。目前各大浏览器都支持XML,但是支持有差别。在浏览器中,我们可以直接查看XML文档,IE会直接显示元素的标签和属性,而Firefox和WebKit的浏览器则需要查看源代码才行。

如果某个XML文件时错误的或者无效果的,那么浏览器会直接报错。一般浏览器都是直接显示,因为XML是信息的传输和储存,所以不会带有数据如何显示的信息(数据的显示是HTML应该做的,而不是XML该做的),但是也可以CSS或者JavaScript等语言来定义XML文档的显示。

XML的语法规则以及元素

XML规则

1.XML所有的元素都必须有关闭标签,其实xhtml也是这样规定。

2.XML是很敏感的,对大小写敏感。

3.XML的嵌套必须是正确的嵌套,一级套一级。

4.XML文档必须有根元素。

5.XML文档的元素的属性都必须加引号。

6.实体引用,比如有一些特殊的标签“<”,“>”等,就必须使用实体引用来代替。

7.XML的注释和HTML一样,都是以<!–开头,以–>结束

8.HTML里面,多个空格只会保留或者显示一个,但是在XML里面,这些空格是会被保留的。

XML元素

1.定义:XML的元素是指从开始标签到结束标签的部分,并且包含标签。

2.元素可以包含其他的标签(就是嵌套,要用正确的嵌套),文本,或者都包含。

3.元素可以拥有自己的属性。

4.命名,XML元素的命名可以包含数字,字母,以及其他的符号,但是不能用“xml”作为名称。名称不能用字母和符号开头,也不能包含空格。避免是用“:”因为“:”会被转化为命名空间。

5.XML具有很强的拓展性,以后慢慢见识。

XML的基础知识以及XML与JSON的比较

xml的学名是可拓展标记语言,主要的作用是用来传输数据,而不是显示,html主要是用来显示数据的。xml是一种标记语言,跟html一样。

xml是没有预定义的标签的,所以,里面所有的标签都可以是自定义的,因为都是自定义的,所以只有自己能看懂。

xml不做神马事情,它只是把数据格式化了而已,便于传输或者存储。它不会有逻辑行为,它就是个很纯洁的纯文本,大部分语言都能够处理它。

xml有很多好处,比如它简化了数据的传输,因为它有很好的兼容性之类的。让数据更有用,在Ajax的应用中就是个很好的例子,让不同的语言能够处理同一份数据,而不用多复杂。

xml和json的区别:

1.xml的解析要比json复杂,因为xml是有指定的父节点和子节点的(其实xml可以看成一个DOM),而json的存储方式是key=>value形式,或者值的集合(直接理解成数组,但是不等于数组)。

2.xml比较适合标记文档,而json更加适合数据的交换处理。

3.JavaScript读取xml和json。在客户端,对于json,JavaScript可以直接使用eval方法将json字符串序列化为JavaScript对象,然后就能直接调用。xml相对的要复杂点,因为xml生产的数据本身就是个文档树,那么就必须使用DOM API来处理和访问了,相对比较复杂。

4.在性能上而言,xml有很多的open和closing标记,json更简便,因为没有xml那些标记。同样的,json的解析也比xml的解析要快一点。

5.xml比较成熟,也有比较齐全的验证,而相对json,就相对的稍微要弱一点。所以说,安全性方面,xml要比json强,在service端的开发,xml还是首选。

个人感觉json格式的存储方式看起来更舒服,也更爽。xml的话,感觉就像看一大坨一大坨的标记。