【问题标题】:how read the data from XML file using php如何使用 php 从 XML 文件中读取数据
【发布时间】:2014-02-27 23:46:35
【问题描述】:

我有一个包含数据的 XML 文件,我想读取 XML 文件获取值并显示值,我正在尝试显示 RECIPIENT_NUM 和 TEMPLATE,但现在我只能显示 TEMPLATE 但我不能无法显示 RECIPIENT_NUM。下面是我的代码,任何人都可以指导我显示 RECIPIENT_NUM,谢谢

XML

<?xml version="1.0" encoding="UTF-8"?>
<DOCUMENT>
   <VERSION>2.0</VERSION>
   <INVOICE_NUM>33</INVOICE_NUM>
   <PIN>14567894</PIN>
   <MESSAGE_TYPE>INSTANT_SEND</MESSAGE_TYPE>
   <COUNTRY_CODE>xxxxxxx</COUNTRY_CODE>
   <TEMPLATE>Dear Mrs Braem, this is a message from xxxxxxx. Kindly call us regarding your cleaning appoitnment tomorrow at 9.30. Thanks and Regards</TEMPLATE>
   <DATABASEINFO>
      <DATABASE_NAME>xxxxxx</DATABASE_NAME>
      <CLINIC_ID>1</CLINIC_ID>
   </DATABASEINFO>
   <MESSAGES>
      <MESSAGE>
         <SEND_DATE>2013-12-15</SEND_DATE>
         <ENTITY_ID>0</ENTITY_ID>
         <RECIPIENT_NUM>xxxxxxx</RECIPIENT_NUM>
         <MESSAGE_PARAMS />
      </MESSAGE>
   </MESSAGES>
   <CSUM>ffd6c84a1a89a0f2ebc8b1dc8ea1f4fb</CSUM>
</DOCUMENT>

PHP

<html>
<body>

<?php
$xml=simplexml_load_file("/data/data/www/Message.xml");
print_r($xml);

echo $xml->TEMPLATE . "<br>";
echo $xml->RECIPIENT_NUM."<br>";
?>  

</body>
</html>

【问题讨论】:

    标签: php html xml file


    【解决方案1】:

    你要看看XML的结构,你需要做的

    echo $xml->MESSAGES->MESSAGE->RECIPIENT_NUM."<br>";
    

    【讨论】:

      【解决方案2】:

      这对我有用,

      $xml = simplexml_load_file("/data/data/www/Message.xml");
      foreach($xml->children() as $key => $children) {
        print((string)$children->TEMPLATE); echo "<br>";
        print((string)$children->RECIPIENT_NUM); echo "<br>";
        // Remaining codes here.
      }
      

      simplexml_load_file() 将 xml 节点作为对象返回,该对象中的每个元素都可以使用 children() 读取,并且可以使用上面的代码作为字符串值检索。

      【讨论】:

      • 虽然此代码 sn-p 可能是解决方案,但 including 的解释确实有助于提高您的帖子质量。请记住,您是在为将来的读者回答问题,而这些人可能不知道您提出代码建议的原因
      • 感谢您的建议 Şivā SankĂr,我已经更新了描述。
      【解决方案3】:

      DOM比较复杂,但是什么都能做,试试看这个DOM vs. SimpleXML

      试试这个:

      $xml = new DOMDocument();
      $xml->load('/data/data/www/Message.xml');
      $data = array (           
            'template'       => $xml->getElementsByTagName('TEMPLATE')->item(0)->nodeValue,
             'recipient_num' => $xml->getElementsByTagName('RECIPIENT_NUM')->item(0)->nodeValue          
              );         
       var_dump($data);
      

      【讨论】:

      • DOM 并不复杂,只需使用 DOMXpath:$template = $xpath-&gt;evaluate('string(//TEMPLATE)')
      【解决方案4】:

      当您使用 php simplexml_load_file 函数将 xml 文件加载到变量时。名副其实的变成了对象。

      <?php 
      $xml=simplexml_load_file("/data/data/www/Message.xml");
      ?>
      

      因此,在您的情况下,$xml 变量成为一个多级对象,其中 xml 文件的每个元素都是该对象的关键。比如:TEMPLATEPINCOUNTRY_CODEMESSAGES

      要访问元素的数据,需要像下面这样调用。

      echo $xml->TEMPLATE . "<br>";
      

      执行此代码后,您将获得 TEMPLATE 元素下的值。

      但是,由于$xml是一个多级对象,要访问MESSAGES下的元素,MESSAGE下的元素如RECIPIENT_NUM,你必须像下面这样编码。

      echo $xml->MESSAGES->MESSAGE->RECIPIENT_NUM."<br>";
      

      这里, MESSAGES$xml 对象的键。 MESSAGEMESSAGES 的密钥。 RECIPIENT_NUMMESSAGE 的密钥。

      最后会得到关键元素RECIPIENT_NUM = xxxxx的值

      您还可以使用 php foreach 循环访问该值。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-09-13
        • 1970-01-01
        • 2012-09-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多