xml基本概念总结

来源:互联网 发布:广州cnc编程招聘 编辑:程序博客网 时间:2024/05/18 00:21
xml的重点主要是 
1.特点
2.语法规范
3.解析与创建
4.DTD(文档类型定义) 【还有Schema 以后可以自行学习的,暂时还没有看】


DOMDocument 来解析 xml
步骤主要是,一步一步深入,思路明确,但是比较麻烦
1.得到面
$xml = new Document("1.0", "utf-8");
$xml->load('xxx.xml');


2.得到线(得到节点元素)
$xml->getElementByTagName('节点名')-


3.得到点
$nodelist->item(0/1/2.....);



基本概念
1.计算机中用于信息的交换,分离样式和数据,单独得到数据
2.xml是学习webserver和ajax的基础,没有替换掉html之后,出现了xhtml(扩展的超文本语言)
3.xml定义
xml属于可扩展性语言,类似于html,是一种标记语言
目的:传输数据
4.xml特点
可以自行定义标签,并且标签名不能是数组开头
xml和html最大的区别就是数据和样式分离


语法规范
//声明部分--只能这么写
<?xml version="1.0" encoding="utf-8"?> 
//节点部分--xml 中所有都是节点(普通节点、文本节点(换行节点、空白节点))
//只有一个根节点、成对出现(允许<br/><img/>单便签)
//属性尽量小写,属性值只能是 string 类型.必须将""
<root><aa id='12'><bb><br/>你好</bb></aa></root>
//注释
<!-- 我是注释 -->
//特殊字符--用实体代替
&lt; &gt; &quot; &amp; &apos;
<  >     ""     &     ''//其实只有< 和 & 是非法的,但是最好全携程实体字符
如果存在大段文本 建议使用 CDATA 节点
<![CDATA[]]>
//拥有正确的语法的XML文档是像是"形式良好"
1. xml 文档必须有根目录
2. xml 文档必须有关闭目录
3. xml 标签对大小写感兴趣
4. xml 元素必须被正确的嵌套
5. xml 属性必须加""


DOM 解析 XML (解析xml的标准叫做DOM标准,xml和html都遵守DOM标准,所以PHP,c,js解析是必须遵守DOM标准)
1.使用 getElementsByTagName() 和 childNode()
JS解析中有 getElementsByTagName(),getElementsByClassName(),getElementById(只有ID是Element,没有s)
2.PHP的DOM 解析 XML 步骤
1.读取xml文档(创建DOM对象,读取文档)
2.通过getElementsByTagName() 获取对象
3.把 2 中的一组对象挑选节点->item(0) 

//创建DOM对象,读取xml文档
$dom = new DOMDocument("1.0","utf-8"); 
$dom->load('001.xml');


//得到tital节点
$ts = $dom->getElementsByTagName('tital'); //返回的是节点列表对象 Object DOMNodelist
$ts->length; //节点列表个数
$ts->item(0)->whoText; //第一个节点的文本内容


//一下两个效果一样。
childNodes ==> 返回子节点的集合
nodeValue  ==> 返回节点值
$dom->getElementsByTagName('title')->item(0)->nodeValue;
$dom->getElementsByTagName('title')->item(0)->childNodes->item(0)->wholeText;




DOM 创建 XML (自己制作API的时候需要用到)
1.创建文本节点、普通节点、属性节点、CDATA节点
2.添加到父节点中


//创建DOM对象
$dom = new DOMDocument("1.0", "utf-8");


//创建文本节点、普通节点、CDATA节点、属性节点
$text = $dom->createTextNode('你好');
$name = $dom->createElement('name');
$cdata = $dom->createCDATASection('这本书<>很好');
$attr = $dom->createAttribute('goods_id');
$attr->value = '001';


//添加节点
$name->appendChild($text);

//输出或者保存
header('content-type:text/xml');
echo $dom->savaxml($dom);
$dom->save('./02.xml');


DOM 删除和修改 XML节点
//创建DOM对象,载入页面
$dom = new DOMDocument("1.0", "utf-8");
$dom->load('001.xml');


//找到节点
$t1 = $dom->getElementsByTagName('book')->item(0);

//修改节点中的内容,使用replaceChild()
$newt1 = $dom->createTextNode('999');
$t1->replaceChild($newt1,$t1->firstChild)


//删除节点==>使用parentNode()找到父节点,再调用removeChild()删除自己
$t1->parentNode->removeChild($t1);

//保存或者输出
header('content-tyep:text/xml');
echo $dom->savexml();
$dom->save('01.xml');




0 0
原创粉丝点击