【问题标题】:How to access XML data via SImpleXML in PHP如何在 PHP 中通过 SIMpleXML 访问 XML 数据
【发布时间】:2017-05-17 12:26:13
【问题描述】:

我有一个 XML 源,它似乎使用了一些 d2LogicalModel 标记,我真的很难弄清楚如何使用 PHP 的 SimpleXML 从中提取任何数据。

我在下面包含了一个缩减版的 XML:如何提取 carParkIdentity? 如何访问特定的 id?

那剩下的数据我就可以自己搞定了!

非常感谢!

<d2lm:d2LogicalModel xmlns:d2lm="http://datex2.eu/schema/1_0/1_0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xalan="http://xml.apache.org/xslt" xmlns:java="http://xml.apache.org/xalan/java" modelBaseVersion="1.0" xsi:schemaLocation="http://datex2.eu/schema/1_0/1_0 http://datex2.eu/schema/1_0/1_0/DATEXIISchema_1_0_1_0.xsd">
  <d2lm:exchange>...</d2lm:exchange>
  <d2lm:payloadPublication lang="en" xsi:type="d2lm:SituationPublication">
    <d2lm:situation id="CPN0017">
      <d2lm:situationRecord id="CPN0017_1" xsi:type="d2lm:CarParks">
        <d2lm:situationRecordCreationTime>2017-01-03T10:47:41</d2lm:situationRecordCreationTime>
        <d2lm:situationRecordVersion>1</d2lm:situationRecordVersion>
        <d2lm:carParkIdentity>Chapelfield, Chapelfield Road, N:CPN0017</d2lm:carParkIdentity>
        <d2lm:carParkOccupancy>77.0</d2lm:carParkOccupancy>
        <d2lm:carParkStatus>enoughSpacesAvailable</d2lm:carParkStatus>
      </d2lm:situationRecord>
    </d2lm:situation>
  </d2lm:payloadPublication>
</d2lm:d2LogicalModel>

【问题讨论】:

  • 您是否尝试在 google 中粘贴相同的标题?如果没有,那么粘贴,你会得到很多教程和答案。php.net/manual/en/simplexml.examples-basic.php
  • 如果一切都失败了Read the Manual 编写代码,如果遇到任何问题,请返回
  • 我已经阅读了 SimpleXML 的示例和文档,但它们似乎不适用于这个特定的标记,这就是我遇到困难的地方!也许我的问题表述有误 - 我不需要 SimpleXML 的基本帮助,我需要帮助使用 SimpleXML 来处理这个我运气不佳的特殊奇怪标记。

标签: php xml simplexml


【解决方案1】:

就像这段代码一样简单:

$xml = simplexml_load_file('/PATH/TO/YOUR/FILE.XML');

foreach ($xml->xpath('//d2lm:carParkIdentity') as $child) {

    echo $child;

}

另外,非常欢迎您查看 XPath 语法 here

【讨论】:

  • 我提供的代码返回 d2lm:carParkIdentity 文本值,这就是您的问题...
  • 哦!开头的双斜线是什么意思?那是为了逃避中间的':'吗?我想这就是我出错的地方,因为我一直在尝试访问它们,例如:$xml->payloadPublication->situation 等!编辑:是的,很抱歉之前的评论,那是为了继续上面的评论。这是一个很好的解决方案!
  • @nomaki,XPath 查询允许您从 XML 文档中检索数据。我已经用 XPath 文档的链接更新了我的答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-13
相关资源
最近更新 更多