PHP学习笔记 21 - XML

SimpleXML Parser

  • SimpleXML 是基于树的 xml 解析器
  • 适合 xml 比较小的场合
<?php
$xml = simplexml_load_file("config.xml") or die("无法打开文件");
// $xml = simplexml_load_string("xmlcontent");
if ($xml === false) {
    echo "解析错误:";
    foreach (libxml_get_errors() as $error) {
        echo "<br>" . $error->message;
    }
} else {
    print_r($xml);
    echo "<br>";
    // 访问节点
    echo "ip: " . $xml->ip . "<br>";
    echo "name: " . $xml->name . "<br>";
    echo "addr: " . $xml->addr . "<br>"; 
    // 访问一组节点中的一个
    echo "location of item 0: " . $xml->item[0]->location . "<br>"; 
    // 遍历
    foreach ($xml->item as $item) {
        echo "location: " . $item->location . ", price: " . $item->price . "<br>";
    }
    // 访问属性
    echo "desc of item 0: " . $xml->item[0]['desc'] . "<br>";
}
?>

Expat Parser

  • Expat Parser 是基于事件的解析器
  • 适合 XML 较大的场合
<?php
// 创建解析器
$parser = xml_parser_create();

function start($parser, $elementName, $elementAttrs) {
    echo $elementName . " ";
}

function stop($parser, $elementName) {
    echo "<br>";
}

function data($parser, $data) {
    echo $data;
}

// 设置元素处理回调函数
xml_set_element_handler($parser, "start", "stop");

// 设置数据处理回调函数
xml_set_character_data_handler($parser, "data");

// 读取文件,解析XML
$f = fopen("config.xml", "r");
while ($data = fread($f, 1024)) {
    xml_parse($parser, $data, feof($f)) or 
    die(
        "line: " . xml_get_current_line_number($parser) . 
        ", Error: " . xml_error_string(xml_get_error_code($parser))
    );
}

// 销毁
xml_parser_free($parser);
?>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值