下面是我尝试解析从美国国会图书馆SRU服务返回的XML代码进行图书搜索时得到的响应。我该如何看待 [recordData] =>获取标题,创建者,发布者信息的SimpleXMLElement对象?这是我第一次钻研XML。任何帮助将不胜感激。这是我得到的回应。我找到了处理名称空间的代码,但无法弄清楚如何超越recordData标记。
SimpleXMLElement Object
(
[version] => 1.1
[numberOfRecords] => 1
[records] => SimpleXMLElement Object
(
[record] => SimpleXMLElement Object
(
[recordSchema] => info:srw/schema/1/dc-v1.1
[recordPacking] => xml
[recordData] => SimpleXMLElement Object
(
)
[recordPosition] => 1
)
)
$entry=simplexml_load_file('xml_data.xml');
$namespaces = $entry->getNameSpaces(true);
$yr = $entry->children($namespaces['zs']);
print_r($yr);
<zs:searchRetrieveResponse xmlns:zs="http://www.loc.gov/zing/srw/">
<zs:version>1.1</zs:version>
<zs:numberOfRecords>1</zs:numberOfRecords>
<zs:records>
<zs:record>
<zs:recordSchema>info:srw/schema/1/dc-v1.1</zs:recordSchema>
<zs:recordPacking>xml</zs:recordPacking>
<zs:recordData>
<srw_dc:dc xmlns:srw_dc="info:srw/schema/1/dc-schema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://purl.org/dc/elements/1.1/" xsi:schemaLocation="info:srw/schema/1/dc-schema http://www.loc.gov/standards/sru/resources/dc-schema.xsd">
<title>My life /</title>
<creator>Clinton, Bill, 1946-</creator>
<type>text</type>
<publisher>New York : Knopf,</publisher>
<date>2004.</date>
<language>eng</language>
<description>Includes index.</description>
<subject>Clinton, Bill, 1946-</subject>
<subject>Clinton, Bill, 1946---Family.</subject>
<subject>Clinton family.</subject>
<subject>Presidents--United States--Biography.</subject>
<coverage>United States--Politics and government--1993-2001.</coverage>
<identifier>
http://www.loc.gov/catdir/samples/random051/2004107564.html
</identifier>
<identifier>
http://www.loc.gov/catdir/description/random051/2004107564.html
</identifier>
<identifier>URN:ISBN:0375414576</identifier>
</srw_dc:dc>
</zs:recordData>
<zs:recordPosition>1</zs:recordPosition>
</zs:record>
</zs:records>
</zs:searchRetrieveResponse>
答案 0 :(得分:2)
参见文档:
http://us3.php.net/SimpleXMLElement
一个简单的例子显示:
foreach( $xmldata->children() AS $child )
{
//run any query you want on the children.. they are also nodes.
$name = $child->getName();
}