首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DOMDocument->createTextNode不编码XML

DOMDocument->createTextNode不编码XML
EN

Stack Overflow用户
提问于 2011-10-11 20:15:21
回答 2查看 1.8K关注 0票数 1

我有XML,我需要用户能够根据自己的喜好编辑(在textarea中),然后将其读入到DOMDocument中。

代码语言:javascript
复制
$dom = new DOMDocument();
$dom->formatOutput = true;      //Formating the output
$ele = $dom->createElement("someele", "Hello");
$dom->appendChild( $ele );

$string = "<yowhatsup><noway>some text</noway></yowhatsup>";

$ele = $dom->createElement("otherxmlstuff", $string);
$dom->appendChild( $ele );

现在,输出对$string变量进行了编码,这对我来说并不好,因为我希望用户能够向我的DOMDocument中添加xml和一个字符串。

我是否可以做一些预处理来将文本转换为元素,或者我找错了树。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-10-11 20:23:17

您可以使用DOMDocumentFragment及其appendXML()方法,例如

代码语言:javascript
复制
<?php
$doc = new DOMDocument();
$doc->formatOutput = true;
$ele = $doc->createElement("someele", "Hello");
    $xmlstuff = $doc->createElement("otherxmlstuff");

        $fragment = $doc->createDocumentFragment();
        $fragment->appendXML("<foo>text</foo><bar>text2</bar>");
        $xmlstuff->appendChild($fragment);

    $ele->appendChild($xmlstuff);
$doc->appendChild( $ele );
echo $doc->saveXML();

打印

代码语言:javascript
复制
<?xml version="1.0"?>
<someele>Hello<otherxmlstuff><foo>text</foo><bar>text2</bar></otherxmlstuff></someele>
票数 2
EN

Stack Overflow用户

发布于 2011-10-11 20:24:17

您需要创建一个DOMDocumentFragment而不是一个元素。当您设置一个元素的文本时-就像您对createElement方法所做的那样-它是超文本标记语言编码的。这是正确的行为。如果要包含任意XML,请使用createDocumentFragmentappendXML

代码语言:javascript
复制
<?php

$dom = new DOMDocument();
$dom->formatOutput = true;      //Formating the output
$ele = $dom->createElement("someele", "Hello");
$dom->appendChild( $ele );

$string = "<yowhatsup><noway>some text</noway></yowhatsup>";

$frag = $dom->createDocumentFragment();
$frag->appendXML($string);
$dom->appendChild( $frag );

但是要非常小心地清理来自你的用户的输入。如果您不能很好地进行清理,您将得到一个XSS漏洞,从而允许插入任意内容。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7725874

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档