xml 笔记

xml 语法规范


<!-- xml注释-->


1 声明xml 文件 
<?xml version="1.0"  encoding="utf-8"?>


2节点部分
<节点名> </节点名>


标签的写法
<a></a> 标签必须成对出现,闭合
<br/> 也可以单标签自闭和
标签属性全小写


3
XML 文档只能有一个顶层元素。处理资源 <root></root>
<root><a></a></root> 正确
<root></root><a></a> 错误


4属性
属性必有值,小写  属性值必用 双引号引起来


5特殊字符要用实体来代替


6 CDATA节 原样输出大段文本
<![CDATA[此处为文本]]>


7在xml中一切皆节点 包括换行符和 空白


//DOMDocument 类


// 创建类
$dom = new DOMDocument('1.0','utf-8');




// 1 创建文本节点
$t = $dom->createTextNode('天龙八部');


// 2 创建普通节点
$name = $dom->creatEelement('tit');


// 3 把文件节点 加到普通节点中        //添加没有返回值 
$name->appendChild($t);               //元素的方法


//4 创建cdata节
$data = $dom->createCDATASection('在这所有的文字都会原样输出');
$tro = $dom->createElement('tro');
$tro->appendchild($data);


//请求头 告诉浏览器这是xml文件
header("content-type:text/xml");


//直接输出在浏览器上
echo  $dom->savexml();


//保存在某个文件里
$dom->save('文件名')?ok:fail;


//查找某个文本节点
echo  $dom->getElementsByTagName('tit')->item(0)->childNodes->item(0)->wholeText;   //节点列表               //节点元素 //节点列表 //文本节点      


//      echo 天龙八部
echo $dom->getElementsByTagName('tit')->item(0)->nodeValue;




//只能是自己的子节点才能删除
$mv = $dom->getElementsByTagName('book')->item(0);
$w = $dom->getElementsByTagName('root')->removeChild($mv);




xml ->数组  有利于交换   php

function xml2arr($sim){
   $arr = (array)$sim;
   foreach($arr as $k=>$v){
      if($v instanceof simplexmlelement || is_array($v)){
               $arr[$k] = xml2arr($v);
      }
   }
   return $arr;
}


$s = simplexml_load_file('./dict.xml');
//print_r($s);
echo '<hr />';


$data = xml2arr($s)
file_put_contents('liuji.php',$data);





数组->xml   有利于传输

//数组转xml


  $arr = array(
   'name' => '虚竹',
   'sex'  => '男',
   'wugong'=>array(
        'xiao'=>'道家',
        'luo' =>'佛家',
        'fen' =>array(
           '1'=>'www'
        )
   )
 );



 //把数组转成xml
  function arr2xml($arr,$key=null){
      if($key===null){
    $xml = new simpleXMLElement('<?xml version="1.0" encoding="utf-8"?><root></root>');
      }else{
       $xml = $key;
      }
     foreach ($arr as $k=>$v){
         if(is_array($v)){
         arr2xml($v,$xml->addchild($k)) ;
         }else if(is_numeric($k)){
           $xml->addchild('a'.$k,$v);  //如果$k是数字,加上'a' 
         }else{  
           $xml->addchild($k,$v);
         }
     }
     return $xml->savexml();
  }
  //header('content-type:text/xml');
 print_r(arr2xml($arr));






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值