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 Centos7 / PETGEM
  • ¥15 csmar数据进行spss描述性统计分析
  • ¥15 各位请问平行检验趋势图这样要怎么调整?说标准差差异太大了
  • ¥15 delphi webbrowser组件网页下拉菜单自动选择问题
  • ¥15 wpf界面一直接收PLC给过来的信号,导致UI界面操作起来会卡顿
  • ¥15 init i2c:2 freq:100000[MAIXPY]: find ov2640[MAIXPY]: find ov sensor是main文件哪里有问题吗
  • ¥15 运动想象脑电信号数据集.vhdr
  • ¥15 三因素重复测量数据R语句编写,不存在交互作用
  • ¥15 微信会员卡等级和折扣规则
  • ¥15 微信公众平台自制会员卡可以通过收款码收款码收款进行自动积分吗