php - 如何使用 SimpleXMLElement 和多个命名空间解析 XML 文件?

标签 php xml parsing namespaces simplexml

我有一个 XML 文件,看起来像这个网站上的例子:http://msdn.microsoft.com/en-us/library/ee223815(v=sql.105).aspx

我正在尝试使用以下方法解析 XML 文件:

$data = file_get_contents('http://mywebsite here');
$xml = new SimpleXMLElement($data);
$str = $xml->Author;
echo $str;

不幸的是,这不起作用,我怀疑这是由于命名空间造成的。我可以使用 asXML() 转储 $xml 并正确显示 XML 数据。

我知道我需要以某种方式插入命名空间,但我不确定如何插入。如何解析这种类型的 XML 文件?

最佳答案

您只需要注册命名空间

$sxe = new SimpleXMLElement($data);
$sxe->registerXPathNamespace("diffgr", "urn:schemas-microsoft-com:xml-diffgram-v1");
$data = $sxe->xpath("//diffgr:diffgram") ;
$data = $data[0];
echo "<pre>";
foreach($data->Results->RelevantResults as $result)
{
    echo $result->Author , PHP_EOL ;
}

输出
Ms.Kim    Abercrombie
Mr.GustavoAchong
Mr. Samuel N. Agcaoili

See Full code In Action

关于php - 如何使用 SimpleXMLElement 和多个命名空间解析 XML 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13689026/

相关文章:

PHP在foreach中使用当前函数

php - 如何获取文本中的所有链接(URL)?

java - 如何将项目ID传递给另一个 Activity ?

python XML : ParseError: junk after document element

PHP CSV 字符串到数组

php - 在 MySQL/PHP 中存储用户 BIRTHDATES 的最佳方式是什么?

php - 优化此 SQL 查询

php - 如何将xml文件插入到mysql表中

javascript - Node.js 中的网页抓取/解析来检测 HTML 页面的语言?

php - 为什么这个 JSON.parse 代码不起作用?