PHP DomDocument - 自闭标签和特殊字符

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP DomDocument - 自闭标签和特殊字符相关的知识,希望对你有一定的参考价值。

我正在使用XMLphp生成一个DomDocument文件,但我已经在一个点上取消了包含html权限的自闭标签。

这是所需的输出:

<http-headers>
   <header name="Access-Control-Allow-Origin" value="*" />
</http-headers>

这就是我现在(错误地)正在做的事情:

$httpHeaders = $xml->createElement("http-headers");
$icecast->appendChild($httpHeaders);

$headerName = $xml->createTextNode('<header name="Access-Control-Allow-Origin" value="*" />');
$httpHeaders->appendChild($headerName);

哪个给了我:

<http-headers>&lt;header name="Access-Control-Allow-Origin" value="*" /&gt;</http-headers>

我看过namespacesattribute values,但这一切都非常令人困惑,而且我也找不到一个增加自闭标签的解决方案。

此外,我需要输出<>字符,而不是将它们转换为&lt;&gt;

有人能指出我正确的方向吗?

编辑

取得了一些进展,现在以正确的方式添加元素:

$httpHeaders = $xml->createElement("http-headers");
$icecast->appendChild($httpHeaders);
$httpHeadersHeader = $xml->createElement("header");
$httpHeaders->appendChild($httpHeadersHeader);
$httpHeadersHeader->setAttribute("name", '"Access-Control-Allow-Origin" value="*"'); 

但它输出的是html代码而不是字符:

<http-headers>
    <header name="&quot;Access-Control-Allow-Origin&quot; value=&quot;*&quot;"/>
</http-headers>

我在输出之前添加了UTF-8编码,但它没有帮助:

$xml->encoding = 'UTF-8';
return $xml->save('php://output');

如何输出实际符号而不是代码?

答案

将两个属性添加到一个属性值中,需要将其拆分为两个调用,每个调用一个...

$httpHeadersHeader->setAttribute("name", "Access-Control-Allow-Origin"); 
$httpHeadersHeader->setAttribute("value", "*"); 

以上是关于PHP DomDocument - 自闭标签和特殊字符的主要内容,如果未能解决你的问题,请参考以下文章

PHP DOMDocument 添加了额外的标签

使用 PHP DOMDocument 更改标签属性值

PHP DOMDocument获取标签的属性

使用 PHP XMLReader 检测 XML 自闭标签

DOMDocument & XPath - 每个节点的 HTML 标签

PHP domdocument 插入符号