XML特殊字符处理
由于&、<、>、" 等字符在XML中有特殊含义,如果XML自定义的字段值中包含这些特殊字符,则需要特殊处理,否则的话XML结构可能会出错。
方法一:使用实体参照代替
实体参照 | 对应字符 |
---|---|
& | & |
< | < |
> | > |
" | " |
' | ’ |
例如:
<?xml version="1.0" encoding="UTF-8"?>
<Worksheet>
<Table>
<Row>
<Cell><Data ss:Type="String">Mr&abc</Data></Cell><!--字段值为Mr&-->
<Cell><Data ss:Type="String">a<b</Data></Cell><!--字段值为a<b-->
<Cell><Data ss:Type="String">c>d</Data></Cell><!--字段值为c>d-->
<Cell><Data ss:Type="String">hello"world"</Data></Cell><!--字段值为hello"world"-->
<Cell><Data ss:Type="String">It's good</Data></Cell><!--字段值为It's good-->
</Row>
</Table>
</Worksheet>
</Workbook>
方法二:使用CDATA处理
使用XML语言提供的CDATA处理包含特殊字符的字符串,当XML处理器解析到CDATA标记时,会将范围中的原数据原封不动地传递。使用格式如下:
<![CDATA[your string]]>
上面的例子使用CDATA处理
<?xml version="1.0" encoding="UTF-8"?>
<Worksheet>
<Table>
<Row>
<Cell><Data ss:Type="String"><![CDATA[Mr&]]></Data></Cell><!--字段值为Mr&-->
<Cell><Data ss:Type="String"><![CDATA[a<b]]></Data></Cell><!--字段值为a<b-->
<Cell><Data ss:Type="String"><![CDATA[c>d]]></Data></Cell><!--字段值为c>d-->
<Cell><Data ss:Type="String"><![CDATA[hello"world"]]></Data></Cell><!--字段值为hello"world"-->
<Cell><Data ss:Type="String"><![CDATA[It's good]]></Data></Cell><!--字段值为It's good-->
</Row>
</Table>
</Worksheet>
</Workbook>