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条)

报告相同问题?

悬赏问题

  • ¥15 C#调用python代码(python带有库)
  • ¥15 矩阵加法的规则是两个矩阵中对应位置的数的绝对值进行加和
  • ¥15 活动选择题。最多可以参加几个项目?
  • ¥15 飞机曲面部件如机翼,壁板等具体的孔位模型
  • ¥15 vs2019中数据导出问题
  • ¥20 云服务Linux系统TCP-MSS值修改?
  • ¥20 关于#单片机#的问题:项目:使用模拟iic与ov2640通讯环境:F407问题:读取的ID号总是0xff,自己调了调发现在读从机数据时,SDA线上并未有信号变化(语言-c语言)
  • ¥20 怎么在stm32门禁成品上增加查询记录功能
  • ¥15 Source insight编写代码后使用CCS5.2版本import之后,代码跳到注释行里面
  • ¥50 NT4.0系统 STOP:0X0000007B