请教大体积XML文件的设计以及更新,高分期待讨论
Namo 2006-04-21 10:03:58 使用XML在OCX与Server之间交换数据,整个XML是对OCX上的Object的一个描述,这些描述信息有OCX自身使用的客户端的信息(ClientInfo),也有需要交互的服务器端需要的信息(ServerInfo);如果按照最直观的方式来设计,那么格式是这样的:
<Object ID="obj1">
<ServerInfo>
...
</ServerInfo>
<ClientInfo>
...
</ClientInfo>
</Object>
<Object ID="obj2">
<ServerInfo>
...
</ServerInfo>
<ClientInfo>
...
</ClientInfo>
</Object>
...
<Object ID="objN">
<ServerInfo>
...
</ServerInfo>
<ClientInfo>
...
</ClientInfo>
</Object>
如前面所说,在服务器端处理数据的时候,实际上只需要ServerInfo的信息,因此在读取XML内容的过程中,诸多的ClientInfo是作为冗余数据读取的。我想使用dtd来设计一个更合理的XML的格式,如下:
<Object ID="obj1">
<!DOCTYPE ServerInfo [
<!ENTITY ServerInfoDetail
SYSTEM "ServerInfoDetail.xml">
]>
<ServerInfo>
&ServerInfoDetail;
</ServerInfo>
<ClientInfo>
...
</ClientInfo>
</Object>
这样可以把所有的ServerInfo写到一个外部文件,读取的时候我就只需要读取这个外部的ServerInfoDetail.xml。但是有一点疑惑,就是我可否使用一个外部文件来容纳多个Object的ServerInfo的信息呢?因为按照我现阶段所知道的,当有多个Object,可能我需要多次定义<!ENTITY ServerInfoDetail SYSTEM "ServerInfoDetail.xml">,也就是说,最终需要有多个<!ENTITY>,每个<!ENTITY>引用的外部文件不同,也就是说,假设我有N个Object,那么我需要定义ServerInfoDetail1.xml、ServerInfoDetail2.xml……ServerInfoDetailN.xml这么多个外部文件,这又不符合我的期望了,请问能有好的解决办法么?
另外,如果在一个体积很大的XML文件中,我只需要更新部分信息,比如每个Object的ServerInfo中的某个Element的某个Attributte的值,这样又有什么好的方式?