PS :关于PHP生成xml过程中出现的分析错误问题,在这里分享我的经验。 对很多人来说这个问题可能太简单了,但如果我自己撞到了,我会在这里记录下来,以免以后出错。 另外,也为遇到这个问题的朋友提供经验,让很多人不要为这个问题烦恼。
首先在这里举个例子:
在浏览器中打开此xml文件时会报告错误,表明xml分析错误:未整理。 ……但是,用编译器打开是正常的,没有错误,所以这到底是在哪里发生的错误呢? 是的,我们先来看看有关w3shcool实体的内容:
PCDATA是指已分析的字符数据(Parsed Character Data )。
XML解析器通常会解析XML文档中的所有文本。
一旦XML元素被解析,标记之间的文本也被解析。
该文本也将被解析
因为解析器可以在XML元素中包含其他元素,如本示例所示。 此元素包含两个元素: first和last。
比尔盖茨
解析器将其分解为以下子元素:
大楼
紧张得不得了
非法的XML字符必须替换为实体引用(entity reference )。
在XML文档中,单击
if salary 1000 then
为了避免这样的错误,请将文字改为“
if salary 1000 then
以下是对xml中五个实体的引用:
注释:严格来说,XML包含字符“
由此可见,遇到非法字符时一定要将字符转义为实体形式。 否则,就会出现报告错误的提示。
除了将非法字符转义到实体外,还必须知道使用其他方法也可以避免在分析非法字符时发生错误。 CDATA(unparsedcharacterdata )表示不应该用XML解析器解析的文本数据。
继续讨论CDATA :
在XML元素中,使用
「
“”也会出现错误,因为解析器会将字符解释为字符实体的开始。
某些文本(如JavaScript代码)包含大量的“
解析器将忽略CDATA部分的所有内容。
CDATA部分以“”结尾:
在上面的示例中,解析器将忽略CDATA节的所有内容。
关于CDATA部分的注释:
CDATA部分不能包含字符串“]”。 嵌套的CDATA部分也不允许。
标记CDATA部分末尾的“]”不能包含空格或换行符。
那么,以上说明内容都来自w3school的说明。 我对上面例子的问题做如下处理,为了简单起见,对报告错误的文件做小处理。
如上图所示,我们尝试了使用CDATA忽略文本部分进行分析。 因此,中间包含的非法字符不会被解析为xml解析器,因此也不会报告错误。
同样可以使用转义字符。 “用替换即可”的问题很容易解决。
这个文纯因为个人面临的问题,混乱的鸭子请绕道。 希望对有需要的人有帮助。