douchi5822 2011-11-25 14:32
浏览 47
已采纳

PHP用Where子句读取XML

Let's say I have this XML file.

<book>
    <id>1</id>
    <title>Harry Potter - bla bla bla</title>
    <author>J.K Rowling</author>
</book>
<book>
    <id>2</id>
    <title>Other book</title>
    <author>A Name</author>
</book>

Is there a way where I can read via PHP and get the #2 id, or do I have to use an IF? Like jQuery selector ':eq(2)', or MySql 'WHERE id=2'

  • 写回答

2条回答 默认 最新

  • duancaishun4812 2011-11-25 15:18
    关注

    If all you want is just the second one you can use DOM. It's simpler.

    $dom->loadXML(<<<XML
    <book>
        <id>1</id>
        <title>Harry Potter - bla bla bla</title>
        <author>J.K Rowling</author>
    </book>
    <book>
        <id>2</id>
        <title>Other book</title>
        <author>A Name</author>
    </book>
    XML;);
    
    $book=$dom->getElementsByTagName('book')->item(1);
    

    Edit: I just saw you say you were looking for second ID, not second element, you need xpath for that.

    $xml=new SimpleXMLElement(<<<XML
    <book>
        <id>1</id>
        <title>Harry Potter - bla bla bla</title>
        <author>J.K Rowling</author>
    </book>
    <book>
        <id>2</id>
        <title>Other book</title>
        <author>A Name</author>
    </book>
    XML;);
    $result=$xml->xpath('/book[id=2]');
    

    More on xpath here

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 名为“Product”的列已属于此 DataTable
  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题