php获取xml页面的问题,如何循环获取?

php获取xml页面的问题,如何循环获取?,第1张

关于你这个问题,我还是建议你用xml读取
这个是不会出错的
当然也可以用正则,不过如果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格式的天气预报的代码吧,比着葫芦画瓢,不懂再追问

<php
$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);
>


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/10281929.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-07
下一篇 2023-05-07

发表评论

登录后才能评论

评论列表(0条)

保存