如何使用php从XML文件中读取数据

时间:2014-02-04 06:08:44

标签: php html xml file

我有一个XML文件,其中包含数据,我想读取XML文件获取值并显示值,我正在尝试显示RECIPIENT_NUM和TEMPLATE,但现在我只能显示TEMPLATE但我可以'能够显示RECIPIENT_NUM.below是我的代码可以任何人指导我显示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>

4 个答案:

答案 0 :(得分:5)

您必须查看XML的结构,

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

这对我有用

$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()读取该对象中的每个元素,并可以使用上述代码将其检索为字符串值。

答案 3 :(得分:0)

当您使用 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 的键。

最后得到key元素的值RECIPIENT_NUM = xxxxx

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