2013-02-11 133 views
2

我试图从头开始创建WXR文件(WordPress eXtended Rss)。SimpleXML:添加“xmlns:wp”属性只会添加“wp”,为什么?

我的代码是基于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:摘录”而不是“摘录”?

回答

3

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

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

谢谢。它有帮助,但我有另一个问题,当我需要添加'',但它看起来像一个主题为下一个问题:) – Kamil 2013-02-12 23:09:56

+0

惊喜:'addChild'也有一个“命名空间”参数;) – 2013-02-13 06:14:05

+0

不真。我试过这个。我想要类似于这个'',即时获得。它将其添加为“xmlns”属性。 – Kamil 2013-02-14 18:05:01

相关问题