XML标记名是PHP函数

时间:2016-11-18 09:47:51

标签: php xml function tags

我正在尝试使用simplexml_load_file函数解析PHP中的XML文件。一切都很好,除了我的XML文件有一个<TIME>标签,这是一个PHP函数。

因此以下代码无法获取标记值:

$xml = simplexml_load_file('some_xml_file.xml');
$value = $xml->SOME_TAG->TIME;

我如何获得此值?

4 个答案:

答案 0 :(得分:0)

从PHP手册:

  

访问包含非字符的XML文档中的元素   允许根据PHP的命名约定(例如连字符)   通过将元素名称封装在大括号和   撇号。

     

示例#3获取

<?php
include 'example.php';

$xml = new SimpleXMLElement($xmlstr);

echo $xml->movie->{'great-lines'}->line; // "PHP solves all my web problems"
?>

如果你需要获得一个属性,你可以这样做:

  

到目前为止,我们只涉及阅读元素名称的工作   他们的价值观SimpleXML还可以访问元素属性。访问   元素的属性就像数组的元素一样。

foreach ($xml->movie[0]->rating as $rating) {
    switch((string) $rating['type'])

答案 1 :(得分:0)

这对我有用

<?php

$xmlString = "<top><middle><TIME>1:27</TIME></middle></top>";
$xml = simplexml_load_string($xmlString);
echo $xml->middle->TIME;


php /tmp/xml.php 
1:27

答案 2 :(得分:0)

检查XML文件的内容。为了使您的PHP代码可以工作,它应该至少包含这个:

<XML>
<SOME_TAG>
   <TIME>1:27</TIME>
</SOME_TAG>
</XML>

当我将此XML文件与您的代码结合使用时,它会按预期工作。

答案 3 :(得分:0)

谢谢大家,我设法得到了价值,但仍然有些奇怪。 XML示例:

<INGREDIENTS>
   <INGREDIENT>
      <NAME>Potatoes</NAME>
      <AMOUNT>10 kg</AMOUNT>
      <TME>20 min</TIME>
   </INGREDIENT>
</INGREDIENTS>

用于获取NAME,AMOUNT和TIME值的PHP代码:

$ing = $xml->INGREDIENTS->INGREDIENT;
$name = $ing->NAME;
$amount= $ing->AMOUNT;
$time= $ing->TIME;
echo $name." / ".$amount." / ".$time;

结果:

Potatoes / 10 kg / 

但是,如果我使用TIME标记的整个路径:

$ing = $xml->INGREDIENTS->INGREDIENT;
$name = $ing->NAME;
$amount= $ing->AMOUNT;
$time= $xml->INGREDIENTS->INGREDIENT->TIME;
echo $name." / ".$amount." / ".$time;

结果:

Potatoes / 10 kg / 20 min

任何人都可以解释为什么它会这样工作吗?