XML的作用可以作为程序间通信的标准。它可以用作配置文件。可以作为小型数据库使用(有些数据放入数据库成本高,可以考虑直接放入文件)。元素组成声明:version版本,encoding字符编码,standalone文档定义是否独立使用(standalone="yes/no"默认no)必须有且只有一个根元素(包含其他元素的元素(相当于body))元素中没有内容(label):可以写成的标签不允许出现在交叉嵌套的XML文件中的空格和换行符,解析程序会(可能)把标签当作标签的内容(Element)命名规范标签区分大小写,不能以数字开头//or"_"不能以xml开头不能包含空格name不能包含冒号xml属性
");document.write("errorlinenumber="+xmldoc.parseError.line+"
");DTD元素修饰符(默认必须只有一个)+1tomany*0tomany?0到1|2选择一个()组DTD元素属性列表属性类型CDATA属性值可以是数字或字符ID属性值是唯一的,以字母开头IDREF/IDREFSID引用(引用)Enumerated枚举类型ENTITY/ENTITIES实体属性特征#REQUIRED属性值是必须有#IMPLIED属性不是必需的(可选)#FIXED值属性值是固定的DEFAULT值默认值DTD实体定义是指定义在实体DTDXML使用&entityname;参数entity用于DTD:%entityname;DOM描述dom(domcumentobjectmodel)把一个xml文件看做一个对象模型,然后通过对象操作xml文件PHPDOM编程步骤创建一个DOMDomcument对象$xmldoc=newDOMDocument();loadxml(指定解析哪个xml文件)(会形成一个DOM树)$xmldoc->load("filename");获取第一个学生姓名$stus=$xmldoc->getElementsByTagName("stu");(1)选择第一个学生$stu1=$stus->item(0);(2)取出姓名(属性与getAttri但是(“属性名称”))$stu1_names=$stu1->getElementsByTagName(“名称”);$stu1_names->item(0)->nodeValue;PHPDOM增加1、2步骤同上3.添加学生(1)取出Root节点$root=$xmldoc->getElementsByTagName("rootnode")->item(0);(根节点只有一个)(2)创建stu节点$stu_node=$xmldoc->createElement("stu");//添加属性节点//$stu_node->setAttribute("age","16");(3)创建name节点$stu_node_name=$xmldoc->createElement("name");$stu_node_name->nodeValue="Wendy";将name挂载到stu节点$stu_node->appendChild($stu_node_name);(4)创建性节点$stu_node_sex=$xmldoc->createElement("sex");$stu_node_sex->nodeValue="女";挂载$stu_node->appendChild($stu_node_sex);(5)创建介绍节点$stu_node_jie=$xmldoc->createElement("Introduction");$stu_node_jie->nodeValue="龙魔法师";挂载$stu_node->appendChild($stu_node_jie);(6)将stu节点挂载到根节点$root->appendChild($stu_node);(7)保存$xmldoc->save("dom.xml");删除步骤1和2同上3.添加学生(1)取出根节点$root=$xmldoc->getElementsByTagName("rootnode")->item(0);(根节点只有一个)(2)找到要删除的stu$stu_delete=$xmldoc->getElementsByTagName("stu")->项目(3);(3)删除(使用removeArrtibute("属性名"))//$root->removeChild($stu);$stu_delete->parentNode->removeChild($stu_delete);(4)保存$xmldoc->save("dom1.xml");修改1、2步骤如上3.找到修改后的stu$stu_updata=$xmldoc->getElementsByTagName("stu")->item(4);4.找到变化的节点$stu_updata_node=$stu_updata->getElementsByTagName("name")->item(0);5.更改值(使用setAttribute("属性名","属性值"))$stu_updata_node_value=$stu_updata_node->nodeValue="Elusha";6.保存$xmldom->save("dom1.xml");XPATH可以跨层取节点,保证层级关系(描述XML元素的位置)xpath的核心思想:快速方便的定位你所在的节点想找到Step1.CreateDOMDocumentobject$doc=newDOMDocument();2.加载xml$doc->load("...xml");3.转换为DOMXpath$domxpath=newDOMXpath($doc);4.利用xpath技术查找节点$domxpath->query("/class");(1)/AAA选择AAA根元素(2)/AAA/BBB选择AAA的所有CCC子元素(3)/AAA/DDD/BBB选取AAA的子元素DDD(4)的所有BBB子元素//BBB所有BBB元素(5)//DDD/BBB所有父元素都是DDD(6)的BBB元素/AAA/CCC/DDD/*所有元素/AAA/CCC/DDD(7)/*/*/*/BBBAllBBBelementswith3ancestorelements(8)//*AllelementssimpleXMLforObject方式操作XML文件1.php5的simpleXML可以传输XML文件的所有元素将其替换为对象,将相同的子元素转换为对象数组,在PHP程序中直接使用foreach语句获取指定元素名称、内容、属性值2、获取指定元素后,获取元素属性是一个数组,属性名是键值。示例1.加载xml文件$class=simplexml_load_file("...xml");2.取出stu$stu=$class->stu;$stu1=$stu[0];2.取出姓名;$stu1_name=$stu1->名字;//属性$stu1_name["属性名"];simpleXML可以和XPath结合使用,返回一个数组$class->xpath("//stu")理解加载DOM对象$dom=newDOMDocument();$dom->load("...xml");$s=simplexml_import_dom($dom);加载字符串$string=<<
