一、XML 命名空间---xmlns属性
XML 中,如果两个不同的文档使用相同的元素名,就会发生冲突。
为了解决这个问题,可以使用前缀来处理,比如:
<h:table>
<h:tr>
<h:td>Apples</h:td>
<h:td>Bananas</h:td>
</h:tr>
</h:table>
<f:table>
<f:name>African Coffee Table</f:name>
<f:width>80</f:width>
<f:length>120</f:length>
</f:table>
前缀可以这样使用,但会显得繁琐。所以,XML使用命名空间来代表前缀。这就是命名空间的由来。比如:
<root>
<h:table xmlns:h="http://www.w3.org/TR/html4/">
<h:tr>
<h:td>Apples</h:td>
<h:td>Bananas</h:td>
</h:tr>
</h:table>
<f:table xmlns:f="http://www.w3cschool.cc/furniture">
<f:name>African Coffee Table</f:name>
<f:width>80</f:width>
<f:length>120</f:length>
</f:table>
</root>
为了更简单,还可以提取命名空间。比如:
<root xmlns:h="http://www.w3.org/TR/html4/"
xmlns:f="http://www.w3cschool.cc/furniture">
<h:table>
<h:tr>
<h:td>Apples</h:td>
<h:td>Bananas</h:td>
</h:tr>
</h:table>
<f:table>
<f:name>African Coffee Table</f:name>
<f:width>80</f:width>
<f:length>120</f:length>
</f:table>
</root>
这里还要注意,命名空间 URI 不会被解析器用于查找信息。其目的是赋予命名空间一个惟一的名称。很多人写代码喜欢把命名空间 URI指向实际存在的地址或者网页。但没有强关联关系,只是为了标识。
二、 CDATA
XML 文档中的所有文本均会被解析器解析。只有 CDATA 区段中的文本会被解析器忽略。
XML 文档有两种数据:1、PCDATA - 被解析的字符数据 2、CDATA - (未解析)字符数据
如果你的XML文本不希望被解析,应该用CDATA 标识。具体的做法为:由 "<![CDATA[" 开始,由 "]]>" 结束