【问题标题】:Getting a specific XML element value with PHP使用 PHP 获取特定的 XML 元素值
【发布时间】:2018-05-24 05:39:42
【问题描述】:

我有一个这样的 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>

我正在尝试从元素中获取特定信息到 PHP 变量中。

要获得“vatno”,我使用:

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

但是如果我需要县名呢?

我不能使用 getElementsByTagName('text') 因为它也会使用元素名称“text”来获取公司名称。

【问题讨论】:

    标签: php xml dom


    【解决方案1】:

    如果我使用它,它可以与 SimpleXML 一起使用

    $xml = simplexml_load_string($data);
    foreach ( $xml->companies->company as $company )   {
        echo $company->vatno.PHP_EOL;
        echo $company->location->county->text.PHP_EOL;
    }
    

    【讨论】:

      【解决方案2】:

      使用 SimpleXML 可能会更好,然后您可以以更直观的方式访问各种组件。 上面的示例类似于...

      $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;
      }
      

      所以每个子元素都使用-&gt;访问。

      如果你想坚持你已经拥有的东西,你应该能够使用......

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

      使用item(1) 将获取&lt;text&gt; 元素的第二个实例,因此假定名称也将具有此值。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-11-20
        • 2016-12-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-01-16
        相关资源
        最近更新 更多