当前位置: 代码迷 >> PHP >> PHP 生成XML解决方法
  详细解决方案

PHP 生成XML解决方法

热度:102   发布时间:2016-04-28 19:36:20.0
PHP 生成XML
我用这段代码生成xml
<?php
 include("conn/conn.php");
 $path = 'xml/createxml.xml';
 if(file_exists($path)) unlink($path);
 $handle = fopen($path, 'w') ;
 $xmlContent .= '<?xml version="1.0" encoding="GB2312"?>' ;  
 $xmlContent .= '<business id ="FRMXXX" comment="发票明细信息">';
 //查询所有板块
  $select1 = $_POST['select1'] ;
  $select2 =$_POST['select2'] ;
  echo  $select1 ;
  echo $select2;
  $query="select * from tb_car where car_road like '%$select1%' and car_road like '%$select2%'";
  $result=mysql_query($query);
  if(mysql_num_rows($result)>0){
  while($myrow=mysql_fetch_array($result)){  
 $xmlContent .='<group>';
 $xmlContent .='<data  name="NSRSBH" value="'.$myrow['car_number'].'"   />';
 $xmlContent .='<data  name="NSRMC"  value="'.$myrow['car_road'].'"     />' ;
 $xmlContent .='<data  name="NSRMC"  value="'.$myrow['car_content'].'"  />' ; 
 $xmlContent .='</group>';
 }
  }
 $xmlContent .='</business>';
 if($handle)
 {
  if(fwrite($handle, $xmlContent))
  {
  fclose($handle);
  }
  echo "<script> window.location.href='indexs.php?lmbs=车源信息查询&select1=$select1&select2=$select2';</script>";
 }
?>

----
为什么生成后的xml data  和 value 的位置会调换
<?xml version="1.0" encoding="GB2312"?>
-<business comment="发票明细信息" id="FRMXXX">
-<group>
<data value="吉A-78745" name="NSRSBH"/>
<data value="长春-沈阳-大连" name="NSRMC"/>
<data value="大货车,直径3.8米,后直径4.12米,长24米,载重52吨" name="NSRMC"/>
</group>
-<group>
<data value="吉A-78745" name="NSRSBH"/>
<data value="长春-沈阳-大连" name="NSRMC"/>
<data value="大货车,直径3.8米,后直径4.12米,长24米,载重52吨" name="NSRMC"/>
</group>
-<group>
<data value="NB888888" name="NSRSBH"/>
<data value="" name="NSRMC"/>
<data value="超级加长劳斯莱斯" name="NSRMC"/>
</group>
</business>
------解决方案--------------------
生成xml是这样的,你可以写dtd文件约束。
------解决方案--------------------
$xmlContent .='</business>';
echo $xmlContent;exit();试试
------解决方案--------------------
引用:
生成xml是这样的,你可以写dtd文件约束。

属性的顺序也能定义吗??怎么定的??
------解决方案--------------------
http://www.w3school.com.cn/dtd/index.asp
------解决方案--------------------



楼主你好,刚刚看了你的代码,看了结果也挺奇怪的。


我注意到你的代码第六行:$xmlContent .= '<?xml version="1.0" encoding="GB2312"?>' ;

我发现你这个变量在前面没有定义也没有赋值,你应该把那个连接符点"."去掉,你去掉测试下。


-------------------------------------------------------------------------------------------------------------------

我记得 XML 的 DTD(文档类型定义)是可以规范定义顺序的,但是它只能规定元素的排列顺序,至于属性的排列顺序,我刚刚测试了下,好像没用,但是我给你写了 DTD,你放进去试试。


<?xml version="1.0" encoding="GB2312"?>
<!DOCTYPE business [
<!ELEMENT business (group)+>
<!ELEMENT group (data)+>
<!ELEMENT data ANY>
<!ATTLIST business comment CDATA #REQUIRED>
<!ATTLIST business id CDATA #REQUIRED>
<!ATTLIST data id ID #IMPLIED>
<!ATTLIST data name CDATA #REQUIRED>
<!ATTLIST data value CDATA #REQUIRED>
]>
<business>
……
</business>




-------------------------------------------------------------------------------------------------------------------

如果你是在想改掉的话,也可以试试专门操作 XML 的 DOMDocument() 类 。





你试试吧,希望对你有用。
  相关解决方案