着重介绍与项目使用相关的xml知识
常见节点
- 虽然xml节点是可以带属性的,但是我们项目中使用的通常没有带属性。
- 常见节点有带子节点的节点(非内容节点)、带文本的节点。
- 协议中表示可选的节点,通常是指文本为空的节点,如
,而不能不带。
节点的顺序
- 非列表节点,通常是不需要限定顺序的,但不排除有一些SB系统处理不了,所以最好按协议顺序来。
- 带列表节点,最好保证子节点按业务要求的顺序排列,即使有标示顺序的子节点。
命名空间
- 通常是有命名空间的话,所有节点都会带,不带通常是不对的。
- 命名空间是通过xmlns:n0=”http://www.gmcc.net/ngcrm/” 来进行别名的,理论上应该认URI而不是别名,但实际使用却常用别名来识别。
- 解析时可以考虑忽略命名空间处理,例如xpath,可以用doc.selectNodes(“//*[local-name()=’Service’]”)找到Service节点。
编码格式
- xml是一种自编码文本,是由第一行决定整个xml的编码格式。
- 上面只是规范,但像http一样,总有系统不是这么玩的,需要双方协商和确认。
- 有的xml就是没有第一行的编码描述,更是应该协商确认。
合法的值
- 除了内置xml文本作为文本节点,或者明显可能特殊字符的文本(如密码,各种属性用某符号拼接),大多数情况不需要关注。
- 和html一样,某些特殊字符是需要转移的,见下面的转义列表。
- 如果不想转义,需要用<![CDATA[]]>括起来,需要注意的是,里边的内容需要保持不转义。
- <![CDATA[]]>里边的内容是原封不动获取的,即使内容带了回车、空格,如果需要对内容二次处理的话,需要注意某些留空可能导致无法处理。
- <![CDATA[]]>不能嵌套两次,只能用转义来规避。
常见的特殊字符
1 2 3 4 5 |
|