简体   繁体   English

如何将名称空间声明移到顶部?

[英]How to move namespace declaration to top?

Code: 码:

<?php
$ns = 'http://example.com';
$rss = new SimpleXMLElement('<?xml version="1.0" encoding="UTF-8" ?>'.
                            '<rss/>');
$rss->registerXPathNamespace('example', $ns);
$rss->addAttribute('version', '2.0');
$rss->addChild('example:foo', '1', $ns);
$rss->addChild('example:bar', '2', $ns);
echo '<pre>'.htmlspecialchars($rss->asXML()).'</pre>';
?>

Output: 输出:

<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"><example:foo xmlns:example="http://example.com">1</example:foo><example:bar xmlns:example="http://example.com">2</example:bar></rss>

Desired output: 所需的输出:

<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:example="http://example.com"><example:foo>1</example:foo><example:bar>2</example:bar></rss>

How do I tell SimpleXML to move the namespace declaration to <rss/> ? 如何告诉SimpleXML将名称空间声明移至<rss/>

You should add xmlns:example="http://example.com" to xml tag 您应该将xmlns:example="http://example.com"到xml标记中
Try this code: 试试这个代码:

<?php
$ns='http://example.com';
$rss=new SimpleXMLElement('<?xml version="1.0" encoding="UTF-8" ?><rss xmlns:example="http://example.com"></rss>');
$rss->registerXPathNamespace('example',$ns);
$rss->addAttribute('version','2.0');
$rss->addChild('example:foo','1',$ns);
$rss->addChild('example:bar','2',$ns);

echo '<pre>'.htmlspecialchars($rss->asXML()).'</pre>';
?>

Output: 输出:

<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:example="http://example.com" version="2.0"><example:foo>1</example:foo><example:bar>2</example:bar></rss>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM