$text = $dom->createTextNode(iconv("gbk","utf-8","<测试>"));
$info->appendChild($text);这是代码片段,XML生成成功后右键查看源代码,< 显示为< , >显示为> <?xml version="1.0" encoding="gbk"?>
<notice>
<info><[asdasdasdas]></info>
</notice>但实际上我想要的效果是这样的<?xml version="1.0" encoding="gbk"?>
<notice>
<info><[asdasdasdas]></info>
</notice>
要如何解决呢?
$info->appendChild($text);这是代码片段,XML生成成功后右键查看源代码,< 显示为< , >显示为> <?xml version="1.0" encoding="gbk"?>
<notice>
<info><[asdasdasdas]></info>
</notice>但实际上我想要的效果是这样的<?xml version="1.0" encoding="gbk"?>
<notice>
<info><[asdasdasdas]></info>
</notice>
要如何解决呢?
<info><[asdasdasdas]></info>
必须写成
<info><[asdasdasdas]></info>
这并不影响 XML 的解析如果一定要原样保留,需写作
<info><![CDATA[<[asdasdasdas]>]]></info>但是 php 的DOM 只支持 CDATA 数据解析,而不支持 CDATA 数据生成
尖括弧是xml标记这一点相信你已经很清楚了。那么,你的<[asdasdasdas]>用意是什么?它是一个标签?还是仅仅是一段文本?
如果是标签,那么,这个标签没有结束标签,本身就是不合规范的。
如果是文本,那么,你的代码是没有错的,输出的结果也没有任何问题。
$text = $dom->createTextNode(iconv("gbk","utf-8","<![CDATA[".$rs["NL_intro"]."]]>"));
$info->appendChild($text);项目经理给我的生成xml规范就是这样,这是我右键查看源代码的样子
<?xml version="1.0" encoding="gbk"?>
<notice>
<info><![CDATA[测试]]></info>
</notice>但是我生成之后的XML,右键查看源代码上面写的第一个text生成是这样的
<info><![CDATA[asdasdasdas]]></info>
第二个text生成是这样的
<info>&lt;![CDATA[asdasdasdas]]&gt;</info>如果单从打开xml页面的显示上来看,是呈现这个样子
第一个text:
<info><![CDATA[asdasdasdas]]></info>
第二个text:
<info><![CDATA[asdasdasdas]]></info> 相比来说第一个text结果更接近经理给我的样本,但是他给的xml标准 双击打开<![CDATA]]更类似关键字,网页输出是呈现蓝色,而我生成的就是纯文本,<![CDATA]]是黑色的。
要生成CDATA节点,你应该用createCDATASection函数而不是createTextNode