SimpleXML:添加“;xmlns:wp”;属性只添加“;wp”;,为什么?


SimpleXML: adding "xmlns:wp" attribute adds only "wp", why?

我试图从头开始创建WXR文件(WordPress扩展Rss)。

我的代码基于wordpress生成的XML/WXR文件,启动方式如下:

<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0"
    xmlns:excerpt="http://wordpress.org/export/1.2/excerpt/"
    xmlns:content="http://purl.org/rss/1.0/modules/content/"
    xmlns:wfw="http://wellformedweb.org/CommentAPI/"
    xmlns:dc="http://purl.org/dc/elements/1.1/"
    xmlns:wp="http://wordpress.org/export/1.2/"
>

我是这样开始的:

$newxml = new SimpleXMLElement("<rss></rss>");
$newxml->addAttribute('version', '2.0');
$newxml->addAttribute('xmlns:excerpt', 'http://wordpress.org/export/1.2/excerpt/');
$newxml->addAttribute('xmlns:content', 'http://purl.org/rss/1.0/modules/content/');
$newxml->addAttribute('xmlns:wfw', 'http://wellformedweb.org/CommentAPI/');
$newxml->addAttribute('xmlns:dc', 'http://purl.org/dc/elements/1.1/');
$newxml->addAttribute('xmlns:wp', 'http://wordpress.org/export/1.2/');

在此之后,我像这样打印XML:

echo htmlspecialchars($newxml->asXML());

我得到的XML是这样的:

<?xml version="1.0"?>
<rss version="2.0" 
     excerpt="http://wordpress.org/export/1.2/excerpt/" 
     content="http://purl.org/rss/1.0/modules/content/" 
     wfw="http://wellformedweb.org/CommentAPI/" 
     dc="http://purl.org/dc/elements/1.1/" 
     wp="http://wordpress.org/export/1.2/">
     <channel/>
</rss>

(为了更好的可读性,我添加了换行符)。

我如何强制使用完整的属性,比如"xmlns:extraction"而不仅仅是"extract"?

冒号之前的部分称为"名称空间",需要单独指定。对于addAttribute,它是第三个参数:

$newxml->addAttribute ('excerpt', 'http://wordpress.org/export/1.2/excerpt/', 'xmlns');