xml 学习

1.  XML 语法

  <?xml version="1.0" encording="utf-8  ?>

  <root>

    <username aa="" bb=""  cc="">      

    </username> 

  </root>

2. xml 经常用的 实体转换符号

  {&gt;    相当于    > }   { &lt;      相当于      <}       {&amp;    相当于  &}   {&apos;     相当于 ' }{ & quot   相当于 "}

3.XML  校验

  var xml =new  Active XObject ();     创建对象

  xml.load("文件名地址");

4. DTD  的语法

  1.内部引用

     <!DOCTYPE 根元素 [内容] >

  2.内部DTD  引用

  <!DOCTYPE 根元素 SYSTEM ".dtd 路径">

  

  3.DTD 的元素

    <!ELEMENT  NAME(元素名称) 元素类型  >

    <!ELEMENT NAME CONTENT(元素类型) >

        3种类型:

          1).  EMPTY   不能包含子元素和文本,但可以有属性

          2).  ANY   可以包含任何  定义的  元素内容

          3). #PCDATA    可以包括任何字符数据,不能包含其它子元素

  4.<! ATTLIST  元素名称

      属性名称  属性类型 属性特点

    属性的类型:1. CDATE     任何字符。2.ID  3.IDREF /IDREFS    枚举  4.

    属性特点: 1.#REQUEST     必须有一个以上        2.#IMPLIED   有或者没有      3.DEFAULT    默认

5. XML   DOM

  1.创建DOM对象

       $xmldoc  = new DOMDoucment();

  2.加载  xml 文件

   $xmldoc->load("xml文件名");

  3.最后保存xml文件

    $xmldoc->save("");

  4.演示如何添加一个学生信息  
         (1)取出根节点,找出根节点的 第1 个
         $root = $xmldoc->getElementByTayName("班级")->item(0);
         (2)创建学生节点
         $stu_node = $xmldoc->createElement("学生");

         (3)创建名字节点
         $stu_node_name =$xmldoc->createElement("名字");
           名字节点的值为张三
         $stu_node_name->nodeValue="张三";
            创建完了名字节点,把名字节点挂载到学生节点
          $stu_node->appendchild($stu_node_name);

         创建年龄节点
         $stu_node_age = $xmldoc->createElement("年龄");
             $stu_node_age—>nodeValue="44";
             把年龄节点挂载到学生节点下
             $stu_node->appendchild($stu_node_age);

         创建介绍节点

         $stu_node_intro=$xmldoc->createElement("介绍");
          $stu_node_intro->nodeValue="iiiiiiiiiiiiiii";
          介绍节点挂载到学生节点
           $stu_node->appendchild($stu_node_age);

         把学生节点挂载到  根节点下
         $root->appendChild($stu_node);

        4 从内存取出数据  保存XML
             1.更新文件
             $xmldoc->save("classes.xml");  
             2. 另保存
             $xmldoc->save("newclasses.xml"); 

   5. 删除的例子(思路:把要删除的节点和根节点断开就可以了

    1.$xmldoc =new DOMDocument();   创建对象

    2.$xmldoc -> load("class.xml");    加载读取的xml文件   

    3.$root =$xmldoc->getElementsByTagName("班级") ->item(0);    找到第一个根节点  (班级)

    4.$student =$xmldoc ->getElementsByTayName("学生") -> item(2);    找到第二个学生  

    5. $root -> removeChild($student);     断开班级节点和学生节点

      第二种方法: $student->parentNode()->removeChild($student);  这种方法不找根节点  直接调入父节点 再删除自己

    6. $xmldoc ->save ("class.xml");     保存class.xml   

5. XML   XPath 技术   (把所加载的  转换成 XPath  模式即可)

   1. $xmldoc = new DOMDocument();

    2.$xmldoc ->load("class.xml");

    3. $domXPath  = new DOMXPath ($xmldoc);     把$xmldoc  转换成   DOMXPath   模式      

    4. $a   =  $domXPath ->query("/b/a");        找到b下的a节点   

           5. DOMXPath  只是提供快捷找到节点。怎么操作与它无关。

6. XML  Simplepath    技术

   1.Simplepath  可以直接 载入  xml文件     所返回的数据  是 数组,然后用 foreach  循环即可

      $simplepath  =  simple_load_file("class.php");

    2.Simplepath   也可以直接 载入   对象      所返回的数据  是 数组

      1. $xmldoc = new DOMDocument();

      2.$xmldoc ->load("class.xml");

      3. $simplepath = simplexml_import_dom($xmldoc);

    3.  Simplepath    与     XPath    结合使用

      $a = $simplepath -> xpath("/b/a");

    

    

  

  

      

    

  

 

原文地址:https://www.cnblogs.com/ningmengcao/p/3280302.html