doujiao2443 2017-12-10 15:36
浏览 97
已采纳

使用PHP获取特定的XML元素值

I have an XML structure like this

<companies>
   <company>
      <vatno>12345678</vatno>
      <name>
         <founded>2013-12-31</founded>
         <text>XYZ Inc</text>
      </name>
      <location>
         <streetname>West Road</streetname>
         <county>
            <no>12345</no>
            <text>East County</text>
         <county>
      </location>
   </company>
</companies>

I am trying to get specific info from the elements into PHP variables.

To get "vatno" I use:

$vatno = $xmlObject->item($i)->getElementsByTagName('vatno')->item(0)->childNodes->item(0)->nodeValue;

But what if I need the county name for example?

I cannot use getElementsByTagName('text') as it would get the company name also using the element name "text".

  • 写回答

2条回答 默认 最新

  • duandaijian1583 2017-12-10 15:43
    关注

    You may be better off using SimpleXML, you can then access the various components in a more intuitive way. The example above would be something like...

    $data = <<< XML
    <companies>
       <company>
          <vatno>12345678</vatno>
          <name>
             <founded>2013-12-31</founded>
             <text>XYZ Inc</text>
          </name>
          <location>
             <streetname>West Road</streetname>
             <county>
                <no>12345</no>
                <text>East County</text>
             </county>
          </location>
       </company>
    </companies>
    XML;
    
    $xml = simplexml_load_string($data);
    foreach ( $xml->company as $company )   {
        echo $company->vatno.PHP_EOL;
        echo $company->location->county->text.PHP_EOL;
    }
    

    So each sub element is accessed using ->.

    If you wanted to stick with what you already had, you should be able to use...

    $countyName = $xmlObject->item($i)->getElementsByTagName('text')->item(1)
    ->nodeValue;
    

    Using item(1) will fetch the second instance of the <text> elements, so this assumes that the name will have this value as well.

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

报告相同问题?

悬赏问题

  • ¥15 vs2022无法联网
  • ¥15 TCP的客户端和服务器的互联
  • ¥15 VB.NET操作免驱摄像头
  • ¥15 笔记本上移动热点开关状态查询
  • ¥85 类鸟群Boids——仿真鸟群避障的相关问题
  • ¥15 CFEDEM自带算例错误,如何解决?
  • ¥15 有没有会使用flac3d软件的家人
  • ¥20 360摄像头无法解绑使用,请教解绑当前账号绑定问题,
  • ¥15 docker实践项目
  • ¥15 利用pthon计算薄膜结构的光导纳