Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/254.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用带有特殊字符的SimpleXML在PHP中创建XML_Php_Mysql_Xml_Apache Flex_Special Characters - Fatal编程技术网

使用带有特殊字符的SimpleXML在PHP中创建XML

使用带有特殊字符的SimpleXML在PHP中创建XML,php,mysql,xml,apache-flex,special-characters,Php,Mysql,Xml,Apache Flex,Special Characters,我在flex 3中进行项目工作,用户输入一些文本,这些文本将存储在mysql数据库中,稍后显示。我使用XML将数据从flex传输到php,反之亦然simplexmlement用于创建XML。问题在于XML在特殊字符上中断 以下是示例代码: 弹性: var-someXML:XML=somedata。。。 变量数据:对象={}; data.xmlData=someXML; saveDataService.send(数据); 此处somedata是用户输入的数据。在php中,我使用simplexml

我在
flex 3
中进行项目工作,用户输入一些文本,这些文本将存储在
mysql
数据库中,稍后显示。我使用
XML
将数据从flex传输到php,反之亦然<
php
中的code>simplexmlement用于创建
XML
。问题在于
XML
在特殊字符上中断

以下是示例代码:

弹性:

var-someXML:XML=somedata。。。
变量数据:对象={};
data.xmlData=someXML;
saveDataService.send(数据);
此处
somedata
是用户输入的数据。在
php
中,我使用
simplexmlement
提取
someXML
,并将其存储到
mysql
。在这里之前没有问题。即使
某些数据
具有特殊字符,其工作正常,数据存储正确

现在,在另一种情况下,从数据库中获取数据并在flex中显示,php的响应会出现错误:

SimpleXMLElement::addChild()[SimpleXMLElement.addChild]: 未终止实体引用

我尝试在php中使用
urlencode
,在flex中使用
decodeURI
函数,但解码后的字符串不一样,解码后仍然有少数特殊字符
%xy


如何解决此问题?

在将数据传递给XML中的SimpleXMLElement::addChild之前,请尝试使用htmlspecialchars转义数据,然后启动实体。
结束它。当您有一个文本
&
时,您将得到一个未终止的实体引用。将所有
更改为
&已不是实体,例如不要将
更改为
&;燃气轮机。或者将一些数据放入CDATA区域。

首先,如果您的xml中有一个悬空的
&
字符,那么您就有一个xml语法错误。它与SimpleXML或任何其他解析器无关。我建议您甚至在数据进入数据库之前就解决这个问题,更好的是,在数据发送到php服务之前


戈登的建议至少对
有效。您可能会遇到其他字符的问题,例如
,通过执行一些跟踪和错误,我发现当存在“&”字符时XML会中断。这会将所需的XML语法字符也转换为html实体,这会使SimpleXMLNo无法解析内容,请尝试调用以下函数:$document->addChild('myElement',htmlspecialchars($value));否则只需使用DOMDocument,它会自动执行;-)感谢您的响应。我会付出努力。是的,我做得很好。
var someXML:XML = <root><data>somedata</data><data>...</data> ... </root>
var data:Object = {};
data.xmlData = someXML;

saveDataService.send(data);
XML(new XMLNode(XMLNodeType.TEXT_NODE, "content with special chars like & and others")).toXMLString();