php xml 文件读取 XMLReader

php xml 文件读取

<?php
/**
$xmlString = ‘<xml>
        <persons count="10">
            <person username="username1" age="20">this is username1 description</person>
            <person username="username2" age="20">this is username2 description</person>
        </persons>
    </xml>‘;

$mXmlTest = new XmlTest();
$dataList = $mXmlTest->parseXmlStr($xmlString);
print_r($dataList);

$xmlFile = ‘./test.xml‘;
$dataList = $mXmlTest->parseXmlFile($xmlFile);
print_r($dataList);

 */

class XmlTest{

//     <xml>
//         <persons count="10">
//             <person username="username1" age="20">this is username1 description</person>
//             <person username="username2" age="20">this is username2 description</person>
//         </persons>
//     </xml>

    /**
     * 解析返回的XML文档
     */
    public function parseXmlFile($xmlFile){
        $reader = new \XMLReader();
        $reader->open($xmlFile, ‘UTF-8‘);
        $nodeName = ‘‘;
        $dataList = array();
        $data = array();
        while ($reader->read()){
            if($reader->nodeType == \XMLReader::ELEMENT){
                $nodeName = $reader->name;
                if($nodeName==‘persons‘){
                    $count = $reader->getAttribute(‘count‘);
                    if(!($count>0)){
                        break;
                    }
                }
                elseif($nodeName==‘person‘){
                    $data = array(
                        ‘username‘=>$reader->getAttribute(‘username‘),
                        ‘age‘=>$reader->getAttribute(‘age‘),
                    );
                }
            }
            if($reader->nodeType == \XMLReader::TEXT && !empty($nodeName)){
                if($nodeName==‘person‘){
                    $data[‘description‘] = strtolower($reader->value);
                    $dataList[] = $data;
                }
            }
        }
        $reader->close();
        return $dataList;
    }

    /**
     * 解析返回的XML文档
     */
    public function parseXmlStr($xmlString){
        $reader = new \XMLReader();
        $reader->xml($xmlString,‘UTF-8‘);
        $nodeName = ‘‘;
        $dataList = array();
        $data = array();
        while ($reader->read()){
            if($reader->nodeType == \XMLReader::ELEMENT){
                $nodeName = $reader->name;
                if($nodeName==‘persons‘){
                    $count = $reader->getAttribute(‘count‘);
                    if(!($count>0)){
                        break;
                    }
                }
                elseif($nodeName==‘person‘){
                    $data = array(
                        ‘username‘=>$reader->getAttribute(‘username‘),
                        ‘age‘=>$reader->getAttribute(‘age‘),
                    );
                }
            }
            if($reader->nodeType == \XMLReader::TEXT && !empty($nodeName)){
                if($nodeName==‘person‘){
                    $data[‘description‘] = strtolower($reader->value);
                    $dataList[] = $data;
                }
            }
        }
        return $dataList;
    }
}
时间: 2024-10-10 07:00:30

php xml 文件读取 XMLReader的相关文章

javascript读取xml文件读取节点数据的例子

分享下用javascript读取xml文件读取节点数据方法. 读取的节点数据,还有一种情况是读取节点属性数据. <head> <title></title> <script type="text/javascript"> var objLength = null; var xmlHttp; var strurl = ""; function ajaxrequst() { if (window.ActiveXObject

【U1结业机试题】新闻内容管理系统:解析XML文件读取Html模版生成网页文件

一.作业要求: 1.在xml文件中创建新闻节点news,包含标题.作者.日期.正文等信息 2.创建HTML模板文件 3.读取xml中所有新闻信息,并使用新闻信息替换模板文件中占位符,从而为每一条新闻生成一个HTML静态页面 二.参考思路: 阶段1:创建xml 添加测试记录不少于三条 阶段2:创建HTML模板文件 阶段3:从xml读取新闻信息,保存在泛型集合中 阶段4:读取模板文件 训练要点: Reader类 需求说明: 读取HTML模板文件news.template,为使用新闻信息替换其中的占位

java实现xml文件读取并保存到对象

首先浅聊一下解析xml的四种方式: 1.DOM方式:有缺点但是这个缺点却也是他的优点.下面详细介绍: 以树形的层次结构组织节点或信息片断集合,可以获得同一个文档中的多处不同数据.使用起来简单. 优点是:可以获得同一个文档中的多处不同数据,使用起来简单. 缺点是:需要加载整个xml文件,这对内存和资源有一定的消耗,如果是小型的xml文件可以尝试用 DOM方式解析. 经测试当用DOM方式读取大小为10M的文件时, 将会产生内存溢出异常. 2.SAX方式:在读取数据时检查数据,不用解析整个文档,因此不

游戏场景需要是可配置的:AssetManager工具类和xml文件读取

我们已经知道,游戏得有个活动场景(每个场景是个可点击的button控件),并且可以通过代码生成控件的方式把活动场景进行多行多列的排列.见上篇:https://www.cnblogs.com/zzqm-gamelife/p/10254466.html 但是没有解决这样的问题: 1.场景名称需要自定义 2.版本更新,今天要加个"蟠桃园"的地图,明天活动,又加个"九重妖塔". 如果每次加个地图就要改一次代码,太麻烦了.我们选择用xml文件来做配置(PS,有条件的可以用服务

XML文件读取方式

XmlDocument将XML文件视为树状结构,它装载XML文档并在内存中构建该文档的树状结构.XmlDocument来代表了一个XML文档,它支持对于XMl文档树的遍历,插入,删除,和替换. XmlDocumet 类允许通过三种方式打开一个Xml文档 1.指定XMl文件URL 2.包含XML文档数据的文件流对象 3. 包含XML文档数据的字符串 string textpath = @"C:\Test.xml"; try { XmlDocument doc = new XmlDocum

C# xml文件读取与修改

c#读写xml文件已知有一个XML文件(bookstore.xml)如下: Code<?xml version="1.0" encoding="gb2312"?><bookstore> <book genre="fantasy" ISBN="2-3631-4"> <title>Oberon's Legacy</title> <author>Corets,

springmvc加载xml文件读取本地properties配置文件

org.springframework.beans.factory.config.PropertyPlaceholderConfigurer.由这个类别,您可以将一些组态设定,移出至.properties档案中,如此的安排可以让XML定义档负责系统相关设定,而.properties档可 以作为客户根据需求,自定义一些相关的参数.实际上,PropertyPlaceholderConfigurer起的作用就是将占位符指向的数据库配置 信息放在bean中定义的工具. (1)使用以下方式读取单个本地文件

cocos2d-x之xml文件读取初试

auto doc=new tinyxml2::XMLDocument(); doc->Parse(FileUtils::getInstance()->getStringFromFile("data_1.xml").c_str()); auto root=doc->RootElement(); for (auto e=root->FirstChildElement();e;e=e->NextSiblingElement()) { std::string st

C# 读取xml文件忽略xml文件的注释

默认情况下,读取xml文件是不忽略注释的,这样读取带注释的节点会造成异常,那么怎么屏蔽掉这些注释呢? 方案如下: XmlDocument doc = new XmlDocument(); XmlReaderSettings settings = new XmlReaderSettings(); settings.IgnoreComments = true; //xmlFilePath:xml文件路径 XmlReader reader = XmlReader.Create(xmlFilePath,