电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

PHP 中的 SimpleXML 處理

瀏覽:6日期:2024-02-10 11:35:15

了解和 PHP 版本 5 捆綁到一起的 SimpleXML 擴展,它使 PHP 頁面能夠以 PHP 友好的語法來查詢、搜索、修改和重新發布 XML。

PHP 版本 5 引入了 SimpleXML,一種用于讀寫 XML 的新的應用程序編程接口(API)。在 SimpleXML 中,下面的這樣的表達式:

$doc->rss->channel->item->title

從文檔中選擇元素。只要熟悉文檔的結構,很容易編寫這種表達式。但是,如果不很清楚需要的元素出現在何處(比如 Docbook、HTML 和類似的敘述性文檔中),SimpleXML 可以使用 XPath 表達式尋找這些元素。

開始使用 SimpleXML

假設需要一個 PHP 頁面將 RSS 提要(feed)轉化成 HTML。RSS 是一種簡單的 XML 格式用于發布連鎖內容。文檔的根元素是 rss,它包括一個 channel 元素。channel 元素包含關于提要的元數據,如標題、語言和 URL。它還包含各種封裝在 item 元素中的報道。每個 item 都有一個 link 元素,包括一個 URL,還有 title 或 description(通常兩者都有),包含普通文本。不使用名稱空間。RSS 的內容當然不止這些,不過對本文來說知道這些就足夠了。清單 1 顯示了一個典型的例子,它包含兩個新聞項。

清單 1. RSS 提要

<?xml version='1.0' encoding='UTF-8'?><rss version='0.92'><channel> <title>Mokka mit Schlag</title> <link>http://www.elharo.com/blog</link> <language>en</language> <item> <title>Penn Station: Gone but not Forgotten</title> <description> The old Penn Station in New York was torn down before I was born. Looking at these pictures, that feels like a mistake.; The current site is functional, but no more; really just some office towers and underground corridors of no particular interest or beauty. The new Madison Square... </description> <link>http://www.elharo.com/blog/new-york/2006/07/31/penn-station</link> </item> <item> <title>Personal for Elliotte Harold</title> <description>Some people use very obnoxious spam filters that require you to type some random string in your subject such as E37T to get through. Needless to say neither I nor most other people bother to communicate with these paranoids. They are grossly overreacting to the spam problem. Personally I won't ...</description>

<link>http://www.elharo.com/blog/tech/2006/07/28/personal-for-elliotte-harold/</link> </item></channel></rss>

我們來開發一個 PHP 頁面將 RSS 提要格式化為 HTML。清單 2 顯示了這個頁面的基本結構。

清單 2. PHP 代碼的靜態結構

<?php // Load and parse the XML document ?><html xml:lang='en' lang='en'><head> <title><?php // The title will be read from the RSS ?></title></head><body>

<h1><?php // The title will be read from the RSS again ?></h1>

<?php// Here we'll put a loop to include each item's title and description?>

</body></html>

解析 XML 文檔

第一步是解析 XML 文檔并保存到變量中。只需要一行代碼,向 simplexml_load_file() 函數傳遞一個 URL 即可:

$rss = simplexml_load_file('http://partners.userland.com/nytRss/nytHomepage.xml');

對于這個例子,我已經從 Userland 的 New York Times 提要(在 http://partners.userland.com/nytRss/nytHomepage.xml)填充了頁面。當然,也可使用其他 RSS 提要的任何 URL。

要注意,雖然名稱為 simplexml_load_file(),該函數實際上解析遠程 HTTP URL 上的 XML 文檔。但這并不是該函數唯一令人感到奇怪的地方。返回值(這里存儲在 $rss 變量中)并沒有指向整個文檔,如果使用過其他 API 如文檔對象模型(DOM)您可能會這樣期望。相反,它指向文檔的根元素。從 SimpleXML 不能訪問文檔序言和結語部分的內容。

尋找提要標題

整個提要的標題(不是提要中各報道的標題)位于 rss 根元素 channel 的 title 孩子中。很容易找到這個標題,就仿佛 XML 文檔是類 rss 的一個對象的序列化形式,它的 channel 字段本身帶有一個 title 字段。使用常規 PHP 對象引用語法,尋找標題的語句如下:

$title = $rss->channel->title;

找到之后可以將其添加到輸出 HTML 中。這樣做很簡單,只要回顯 $title 變量即可:

<title><?php echo $title; ?></title>

這一行輸出元素的字符串值而不是整個元素。就是說寫入文本內容但不包括標簽。

甚至可以完全跳過中間變量 $title:

<title><?php echo $rss->channel->title; ?></title>

因為該頁面在多處重用這個值,我發現用一個含義明確的變量來存儲會更方便。

……

標簽: PHP
主站蜘蛛池模板: 物流公司电话|附近物流公司电话上门取货 | 液压油缸生产厂家-山东液压站-济南捷兴液压机电设备有限公司 | 活动策划,舞台搭建,活动策划公司-首选美湖上海活动策划公司 | 全自动实验室洗瓶机,移液管|培养皿|进样瓶清洗机,清洗剂-广州摩特伟希尔机械设备有限责任公司 | 合景一建-无尘车间设计施工_食品医药洁净车间工程装修总承包公司 | 餐饮加盟网_特色餐饮加盟店_餐饮连锁店加盟| 防爆电机-高压防爆电机-ybx4电动机厂家-河南省南洋防爆电机有限公司 | Trimos测长机_测高仪_TESA_mahr,WYLER水平仪,PWB对刀仪-德瑞华测量技术(苏州)有限公司 | 国资灵活用工平台_全国灵活用工平台前十名-灵活用工结算小帮手 | 新密高铝耐火砖,轻质保温砖价格,浇注料厂家直销-郑州荣盛窑炉耐火材料有限公司 | 塑胶地板-商用PVC地板-pvc地板革-安耐宝pvc塑胶地板厂家 | 24位ADC|8位MCU-芯易德科技有限公司| 播音主持培训-中影人教育播音主持学苑「官网」-中国艺考界的贵族学校 | 称重传感器,测力传感器,拉压力传感器,压力变送器,扭矩传感器,南京凯基特电气有限公司 | 硬度计_影像测量仪_维氏硬度计_佛山市精测计量仪器设备有限公司厂家 | 中药二氧化硫测定仪,食品二氧化硫测定仪|俊腾百科 | TYPE-C厂家|TYPE-C接口|TYPE-C防水母座|TYPE-C贴片-深圳步步精 | 欧美日韩国产一区二区三区不_久久久久国产精品无码不卡_亚洲欧洲美洲无码精品AV_精品一区美女视频_日韩黄色性爱一级视频_日本五十路人妻斩_国产99视频免费精品是看4_亚洲中文字幕无码一二三四区_国产小萍萍挤奶喷奶水_亚洲另类精品无码在线一区 | 爱德华真空泵油/罗茨泵维修,爱发科-比其尔产品供应东莞/杭州/上海等全国各地 | 胶泥瓷砖胶,轻质粉刷石膏,嵌缝石膏厂家,腻子粉批发,永康家德兴,永康市家德兴建材厂 | 碳化硅,氮化硅,冰晶石,绢云母,氟化铝,白刚玉,棕刚玉,石墨,铝粉,铁粉,金属硅粉,金属铝粉,氧化铝粉,硅微粉,蓝晶石,红柱石,莫来石,粉煤灰,三聚磷酸钠,六偏磷酸钠,硫酸镁-皓泉新材料 | 河南mpp电力管_mpp电力管生产厂家_mpp电力电缆保护管价格 - 河南晨翀实业 | 自动螺旋上料机厂家价格-斗式提升机定制-螺杆绞龙输送机-杰凯上料机 | wika威卡压力表-wika压力变送器-德国wika代理-威卡总代-北京博朗宁科技 | 体视显微镜_荧光生物显微镜_显微镜报价-微仪光电生命科学显微镜有限公司 | 房屋质量检测-厂房抗震鉴定-玻璃幕墙检测-房屋安全鉴定机构 | 杭州中央空调维修_冷却塔/新风机柜/热水器/锅炉除垢清洗_除垢剂_风机盘管_冷凝器清洗-杭州亿诺能源有限公司 | 金属抛光机-磁悬浮抛光机-磁力研磨机-磁力清洗机 - 苏州冠古科技 | 沟盖板_复合沟盖板厂_电力盖板_树脂雨水篦子-淄博拜斯特 | 陶瓷加热器,履带式加热器-吴江市兴达电热设备厂 | 天津货架厂_穿梭车货架_重型仓储货架_阁楼货架定制-天津钢力仓储货架生产厂家_天津钢力智能仓储装备 | 凝胶成像系统(wb成像系统)百科-上海嘉鹏 | Maneurop/美优乐压缩机,活塞压缩机,型号规格,技术参数,尺寸图片,价格经销商 | 防爆电机_防爆电机型号_河南省南洋防爆电机有限公司 | 餐饮小吃技术培训-火锅串串香培训「何小胖培训」_成都点石成金[官网] | 舞台木地板厂家_体育运动木地板_室内篮球馆木地板_实木运动地板厂家_欧氏篮球地板推荐 | 郑州大巴车出租|中巴车租赁|旅游大巴租车|包车|郑州旅游大巴车租赁有限公司 | 碳钢法兰厂家,非标法兰,定制异型,法兰生产厂家-河北九瑞管道 | 本安接线盒-本安电路用接线盒-本安分线盒-矿用电话接线盒-JHH生产厂家-宁波龙亿电子科技有限公司 | 济南玻璃安装_济南玻璃门_济南感应门_济南玻璃隔断_济南玻璃门维修_济南镜片安装_济南肯德基门_济南高隔间-济南凯轩鹏宇玻璃有限公司 | 插针变压器-家用电器变压器-工业空调变压器-CD型电抗器-余姚市中驰电器有限公司 |