duanaiguang1960 2014-01-17 23:31
浏览 53
已采纳

如何从xml中提取值

I'm new to PHP. I'm trying to get the data out of the below XML. Now, in my code $data->Address contains value of the below code i.e:

$data->Address = "<tolist></tolist>
        <cclist>
            <cc>
                <contactpersonname>niraj</contactpersonname>
                <name>niraj</name>
                <email>stgh@gmail.com</email>
                <number>+91.3212365212</number>
                <prefix>Ms.</prefix>
                <contactpersonprefix>Ms.</contactpersonprefix>
            </cc>
            <cc>
                <contactpersonname>fdg</contactpersonname>
                <name>admin</name>
                <email>admin12@gmail.com</email>
                <number>+91.4554343234</number>
                <prefix>Mr.</prefix>
                <contactpersonprefix>Mr.</contactpersonprefix>
            </cc>
        </cclist>";

Now I want to extract the <contactpersonname> tag and print it. How can I do this?

  • 写回答

4条回答 默认 最新

  • dougongnan2167 2014-01-18 00:02
    关注

    Since your XML is missing a tag that encompasses all others, you need to create on in order to get parsers to work properly:

    <?php
    $buffer = "<tolist></tolist>
            <cclist>
                <cc>
                    <contactpersonname>niraj</contactpersonname>
                    <name>niraj</name>
                    <email>stgh@gmail.com</email>
                    <number>+91.3212365212</number>
                    <prefix>Ms.</prefix>
                    <contactpersonprefix>Ms.</contactpersonprefix>
                </cc>
                <cc>
                    <contactpersonname>fdg</contactpersonname>
                    <name>admin</name>
                    <email>admin12@gmail.com</email>
                    <number>+91.4554343234</number>
                    <prefix>Mr.</prefix>
                    <contactpersonprefix>Mr.</contactpersonprefix>
                </cc>
            </cclist>";
    
    //   ***** wrap the whole thing in a <root> tag...
    $xml   = simplexml_load_string("<root>".$buffer."</root>");
    $array = json_decode(json_encode((array) $xml), 1);
    
    echo "<pre>";
    print_r($array);
    echo "</pre>";
    ?>
    

    Result:

    Array
    (
        [tolist] => Array
            (
            )
    
        [cclist] => Array
            (
                [cc] => Array
                    (
                        [0] => Array
                            (
                                [contactpersonname] => niraj
                                [name] => niraj
                                [email] => stgh@gmail.com
                                [number] => +91.3212365212
                                [prefix] => Ms.
                                [contactpersonprefix] => Ms.
                            )
    
                        [1] => Array
                            (
                                [contactpersonname] => fdg
                                [name] => admin
                                [email] => admin12@gmail.com
                                [number] => +91.4554343234
                                [prefix] => Mr.
                                [contactpersonprefix] => Mr.
                            )
    
                    )
    
            )
    
    )
    

    UPDATED

    Now you can navigate down to where you want to go with

    echo "<pre>";
    $ccList = $array['cclist'];
    $cc = $ccList['cc'];
    $contacts = array();
    foreach($cc as $i=>$val) {
      $contacts[$i]=$val['contactpersonname'];
    }
    echo "first contact: " . $contacts[0] . "<br>";
    echo "second contact: " . $contacts[1] ."<br>";
    

    Result:

    first contact: niraj
    second contact: fdg
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

悬赏问题

  • ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 java写代码遇到问题,求帮助
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?