这个是不会出错的
当然也可以用正则,不过如果items之间的属性位置变化了,我写的这个正则就不好用了,以下是保证属性位置不变的情况的例子,你把想得到的值,用foreach 循环$matches就可以
$xmlstr = @file_get_contents('data_showxml');
$re='/<variable_sysnew\sname="([^"])"\svalue="([^"])"\sweb_html="([^"])"\stitle_name="([^"])"\stimesvalue="([^"])"/i';
$re_total='/<variable_total\stotalman="([^"])"\stotalmenoy="([^"])"\stotaljifen="([^"])"/i';
@header("Content-Type: text/html; charset=utf-8");
if(preg_match($re_total, $xmlstr, $mat)){
print_r($mat);
echo '<hr/>';
}
if(preg_match_all($re, $xmlstr, $matches)){
print_r($matches);
echo '<hr/>';
}
PHP生成XML的方法很多,这里演示最基本,最简单的字符串构造法。就是使用字符串构造或者拼接成xml数据格式,然后输出或者生成xml文件。
<php$data = array(
array(
'title' => 'baidu',
'country' => 'china',
'name' => '百度',
),
array(
'title' => 'google',
'country' => 'usa',
'name' => '谷歌',
)
);
//构造xml数据格式
$xml = "<xml version=\"10\" encoding=\"utf-8\">\n";
$xml = "<data>\n";
foreach ($data as $itm) {
//循环构造xml单项
$item = "<item>\n";
$item = "<title>" $itm['title'] "</title>\n";
$item = "<country>" $itm['country'] "</country>\n";
$item = " <name>" $itm['name'] "</name>\n";
$item = "</item>\n";
$xml =$item;
}
$xml = "</data>\n";
//输出xml数据
echo $xml;
>
生成的数据格式如下:
先给你个以前写的读取xml格式的天气预报的代码吧,比着葫芦画瓢,不懂再追问
$apistr=file_get_contents(">; ——此文章摘自《完全手册PHP网络开发详解》定价 ¥ 特价 ¥ 详细>>//track linktech cn/m_id=dangdang&a_id=A &l= &l_type = width= height= border= nosave>
function ReqXml() //主程序函数 { CreateXML>
php返回xml,首先封装好xml数据格式,然后return即可。示例如下:
<php//name
$name="zhidao";
//age
$age=10;
//构造xml数据格式
$xml = <<<XML
<xml version="10" encoding="utf-8">
<baidu>
<name> {$name} </name>
<age>{$age}</age>
</baidu>
XML;
return $xml;
>首先 你的 XML文件代码错了, 要改下<user> 缺少斜杠 应该是</user>
XML文件代码:
<xml version="10" encoding="utf-8">
<users>
<user id="1" title="哈哈">张三</user>
<user id="2" title="呵呵">李四</user>
</users>
PHP文件代码:
<php
// 首先要建一个DOMDocument对象
$xml = new DOMDocument();
// 加载Xml文件
$xml->load('1xml');
// 获取所有的user标签
$user = $xml->getElementsByTagName('user');
// 获取user标签的数量
$len = $user->length;
$data = array();
for($i=0;$i<$len;$i++) {
$data[$i] = array();
//第1个 item 代表 user标签的 顺序 第2个 item 代表属性的顺序
$data[$i]['id'] = $user->item($i)->attributes->item(0)->nodeValue;
$data[$i]['title'] = $user->item($i)->attributes->item(1)->nodeValue;
$data[$i]['value'] = $user->item($i)->nodeValue;
}
print_r($data);
>
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)