【问题标题】:Simple XML Element fail to parse a <link type=""> string from an .atom file简单 XML 元素无法解析 .atom 文件中的 <link type=""> 字符串
【发布时间】:2012-11-24 19:31:40
【问题描述】:

我的这段代码由一个用 file_get_contents 包裹的 .atom 文档获取:

<entry>
    <link type="text/html" rel="alternate" href="..."/>
</entry>

我的目标是将第一个 URL 提取到 entry 标签中的 href 属性中,我尝试使用以下方式解析:

$xml = new SimpleXMLElement($XML_file);
$link = $xml->entry[0]->link;
print $link;

但是shell没有给我任何输出。

【问题讨论】:

  • 完整的原子文档是什么样的?它是有效的 XML 吗?
  • @MichaelBerkowski 是的,它完全有效。您可以在编辑中看到整个文件。

标签: php xml parsing simplexml atom-feed


【解决方案1】:

你试过了吗?因为您的链接元素看起来是空的。

<entry>
    <link type="text/html" rel="alternate" href="...">Something</link>
</entry>

比你的php?

这就是我的意思,这正是你试图回应的。 获取属性

http://www.php.net/manual/en/simplexmlelement.attributes.php

$text = '<entry><link type="text/html" rel="alternate" href="..." /></entry>';
$xml = simplexml_load_string($text);
$linkAttributes = $xml->link->attributes();
foreach ($linkAttributes as $key => $value)  {
    echo $key . '::' . $value . PHP_EOL;
}

输出:

type::text/html
rel::alternate
href::...

【讨论】:

  • 没有“东西”。语法是:`。您可以在编辑中看到整个代码。
  • 我无法理解如何按照 PHP 手册示例中的说明操作属性。
  • 非常感谢,这比我想象的要容易;)
  • 请注意,您也可以像使用数组一样按名称访问属性值。例如,echo $xml-&gt;entry-&gt;link['href'];
【解决方案2】:

当您加载一个 xml 文档时,该文档根元素(在本例中为 &lt;entry&gt;)。因此,您希望:

$xml = new SimpleXMLElement($XML_file);
$link = $xml->link;
print $link;

【讨论】:

  • Shell 仍然没有给我任何东西。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-09-20
  • 1970-01-01
  • 2013-05-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多