1

尽我所能,我似乎无法在第 12 行的嵌套 apcm:Property 元素中获取“Id”属性的值,其中“Name”属性等于“sequenceNumber”。如您所见,有感兴趣的元素被埋在具有相同名称和命名空间的其他元素的嵌套中。

使用 PHP,我很难理解如何获取 Id 值。

<?xml version="1.0" encoding="utf-8" ?>
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:apcm="http://ap.org/schemas/03/2005/apcm" xmlns:apnm="http://ap.org/schemas/03/2005/apnm" xmlns:georss="http://www.georss.org/georss">
    <id>urn:publicid:ap.org:30085</id>
<title type="xhtml">
    <apxh:div xmlns:apxh="http://www.w3.org/1999/xhtml">
        <apxh:span>AP New York State News - No Weather</apxh:span>
    </apxh:div>
</title>
<apcm:Property Name="FeedProperties">
    <apcm:Property Name="Entitlement" Id="urn:publicid:ap.org:product:30085" Value="AP New York State News - No Weather" />
    <apcm:Property Name="FeedSequencing">
            <apcm:Property Name="sequenceNumber" Id="169310964" />
            <apcm:Property Name="minDateTime" Value="2012-05-22T18:04:18.913Z" />
    </apcm:Property>
</apcm:Property>
<updated>2012-05-22T18:04:18.913Z</updated>
<author>
    <name>The Associated Press</name>
    <uri>http://www.ap.org</uri>
</author>
<rights>Copyright 2012 The Associated Press. All rights reserved. This material may not be published, broadcast, rewritten or redistributed.</rights>
<link rel="self" href="http://syndication.ap.org/AP.Distro.Feed/GetFeed.aspx?idList=30085&amp;idListType=products&amp;maxItems=20" />
<entry>
...
</entry>
</feed>
4

1 回答 1

0

您必须注册命名空间,并使用[]谓词来确定您感兴趣的 Property 元素。如果您不使用双斜杠,即从文档元素开始查找,这是最安全的。

<?php

$xml = <<<EOD
...
EOD;

$sxe = new SimpleXMLElement($xml);

$sxe->registerXPathNamespace('apcm', 'http://ap.org/schemas/03/2005/apcm');
$sxe->registerXPathNamespace('atom', 'http://www.w3.org/2005/Atom');

$result = $sxe->xpath('/atom:feed/acpm:Property[@Name=\'FeedProperties\']/acpm:Property[@Name=\'FeedSequencing\']/acpm:Property[@Name=\'sequenceNumber\']/@Id');

foreach ($result as $sequenceNumber) {
  echo $sequenceNumber . "\n";
}

?>

Note that there may theoretically be multiple sibling Property elements with the same @Name and so this Xpath may produce multiple nodes (@Id values).

于 2012-05-23T20:17:50.513 回答