dqdl6469 2017-02-14 08:45
浏览 198
已采纳

从$ node-> getElementsByTagName获取id值

I'm looping over a array like so:

   $objDOM->load("URL");
         foreach ($objDOM->getElementsByTagName('CRPublication') as $node) {
                $itemVacature = array (
                'naam' => $node->getElementsByTagName('titleInformation')->item(0)->nodeValue
         }

Now the loaded XML node has an dynamic id. Is it possible to get the value from the id where getElementsByTagName is titleInformation?

The xml node I need to get the id from looks like so:

<createdBy>
<CRUser id="122"></CRUser>
</createdBy>
<modifiedBy>
<CRUser id="122"></CRUser>
</modifiedBy>
<owner>
<CRUser id="122"></CRUser>
</owner>

As you can see I only get the id from this external company. I have to convert these id's to values that make sense.

Thanks in advance!

  • 写回答

2条回答 默认 最新

  • dora12345678 2017-02-14 09:13
    关注

    Example of loop on a loaded an XML object using DOM Document having parent,child and grand-child structure.

    $xml ='<?xml version="1.0" encoding="utf-8"?>
    <root>
        <Parent>
            <child>child 1</child>
            <child>child 2</child>
            <child>child 3</child>
            <subParent>
                <Grandchild>Grandchild 1</Grandchild>
                <Grandchild>Grandchild 2</Grandchild>
                <Grandchild>Grandchild 3</Grandchild>
            </subParent>
        </Parent>
        <Parent>
            <child>child 4</child>
            <child>child 5</child>
            <child>child 6</child>
            <subParent>
                <createdBy>
                    <CRUser id="122"></CRUser>
                </createdBy>
                <modifiedBy>
                    <CRUser id="122"></CRUser>
                </modifiedBy>
                <owner>
                    <CRUser id="122"></CRUser>
                </owner>
            </subParent>
        </Parent>
    </root>';
        $doc = new DOMDocument();
        $doc->preserveWhiteSpace = false;
        $doc->loadXML($xml);
        $i=0;
        while(is_object($obj = $doc->getElementsByTagName("Parent")->item($i))) {
            foreach($obj->childNodes as $nodename) {
                if($nodename->nodeName=='subParent') {
                    foreach($nodename->childNodes as $subNodes) {
                        if($subNodes->nodeName=='owner') {
                            if(!empty($subNodes->childNodes['CRUser']->getAttribute("id"))) {
                                echo $subNodes->childNodes['CRUser']->getAttribute("id")."
    ";
                            }
                        }
                        if($subNodes->nodeName=='createdBy') {
                            if(!empty($subNodes->childNodes['CRUser']->getAttribute("id"))) {
                                echo $subNodes->childNodes['CRUser']->getAttribute("id")."
    ";
                            }
                        }
                        if($subNodes->nodeName=='modifiedBy') {
                            if(!empty($subNodes->childNodes['CRUser']->getAttribute("id"))) {
                                echo $subNodes->childNodes['CRUser']->getAttribute("id")."
    ";
                            }
                        }
                    }
                } else {
                    if(!empty($nodename->getAttribute("id"))) {
                        echo $nodename->getAttribute("id")."
    ";
                    }
                }
            }
        $i++;
        }
        /* Output
        122
        122
        122
        */
    

    Check the output of the above example here

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

报告相同问题?

悬赏问题

  • ¥50 如何用脚本实现输入法的热键设置
  • ¥20 我想使用一些网络协议或者部分协议也行,主要想实现类似于traceroute的一定步长内的路由拓扑功能
  • ¥30 深度学习,前后端连接
  • ¥15 孟德尔随机化结果不一致
  • ¥15 apm2.8飞控罗盘bad health,加速度计校准失败
  • ¥15 求解O-S方程的特征值问题给出边界层布拉休斯平行流的中性曲线
  • ¥15 谁有desed数据集呀
  • ¥20 手写数字识别运行c仿真时,程序报错错误代码sim211-100
  • ¥15 关于#hadoop#的问题
  • ¥15 (标签-Python|关键词-socket)