如何使用 PHP SimpleXML 获取属性(在 mediawiki-api-xml 输出中)

how to get attributes using PHP SimpleXML (in mediawiki-api-xml output)

我正在尝试将 Mediawiki 文章列表添加到我的 php 脚本中。我正在使用 MediaWiki 的 api.php 和 xml 输出。 我的虚拟数据如下所示:

<api>
   <query-continue>
       <categorymembers cmcontinue="page|474c495353494552454e|162"/>
   </query-continue>
   <query>
       <categorymembers>
           <cm pageid="297" ns="0" title="Add move"/>
           <cm pageid="116" ns="0" title="Ascanio-Spread"/>
           <cm pageid="193" ns="0" title="Doublieren"/>
           <cm pageid="358" ns="0" title="Down-under"/>
           <cm pageid="274" ns="0" title="Einwegmuster"/>
           <cm pageid="227" ns="0" title="Elmsley-Count"/>
           <cm pageid="130" ns="0" title="Falsch abheben"/>
           <cm pageid="144" ns="0" title="Falsch mischen"/>
           <cm pageid="565" ns="0" title="Filieren"/>
           <cm pageid="148" ns="0" title="Forcieren"/>
      </categorymembers>
   </query>
</api>

我正在寻找 cm-容器中的所有 "titles"。

我的脚本如下所示:

 $xml = simplexml_load_file($mywiki);
 foreach($xml->cm[0]->attributes() as $a => $b)
 {
   echo $a,'="',$b,"<br>";
 }

这是为了给我第一个cm-container的所有属性。但这行不通,我收到错误消息:

Call to a member function attributes() on null

首先:在发布问题之前,请明确说明您自己的调试工作。你应该检查过这个:

var_dump( $xml->cm[0] );

接下来,您可能希望执行以下操作:

$xml->query[0]->categorymembers[0]->cm[0]

沿着路径向下到达有问题的节点。