我有两个web表单,由用户填写。它们包含不同类型的字段:文本框、单选按钮、复选框(单个或分组)。用户提交的所有信息都存储在数据库中的XML字段中。
我的问题是: XML文件.中的字符串信息的良好实践是什么?
现在我确实喜欢这样:
例如,文本框:将txtName I放入<Name>John</Name>标记中。
例如,Radio :rdbSex I put I <Sex>Male</Sex>。
复选框将组放入一个标记中,并为每个复选框项指定true或false,例如:
<favoriteMovies>
<StarWars>True</StarWars>
<KillBill>False</KillBill>
....
</favoriteMovies>电影存储在一个表中的数据库中,每个表都有一个ID。我是否也应该将其存储在XML文件中?如下所示:
<favoriteMovies>
<StarWars id="4">True</StarWars>
<KillBill id="6">False</KillBill>
....
</favoriteMovies>或者可能只存储选定的选项(在本例中使用or ):
<favoriteMovies>
<StarWars id="4 />
....
</favoriteMovies>同样的问题是下拉控件。它们是从数据库中的一个表中填充的,每个项都有一个id。我应该只存储用户选择的id,或者两者都存储: id和选择的名称。所以最好这样储存:
<Address>
<City>2</City>
</Address>或者像这样:
<Address>
<City id="2" />
</Address>或者像这样
<Address>
<City>New York</City>
</Address>文档由用户提交,但可以重新打开和编辑,网站上的所有控件都应该重新填充。因此,我需要城市的ID来在DropDown控件中选择适当的值,但这会降低XML文档的可读性。
是否有任何建议或文档指定在XML文档中存储web窗体元素的规则?
发布于 2009-11-03 17:40:33
我会走这边:
1)将要放入XML中的内容视为对象
2)为人类找到最能描述对象的属性,将其放在标签之间
3)装饰对象的所有其他属性,将它们作为标记属性
我将以Rubens为例进行修改:
<favoriteMovies>
<Movie id="4">StarWars (just if required)</Movie>
....
</favoriteMovies>我之所以移除这个名字,是因为这是最适合描述这部电影(对人类而言)的地方,而且如果你有特殊的角色,你就可以使用<![CDATA[ ]]> .
希望这能有所帮助
发布于 2009-11-03 17:32:59
我认为您应该采取务实的方式:为原子值使用属性可以导致更小的XML文档。我也喜欢这样:
<favoriteMovies><!-- all this are favorite, so "true" isnt required -->
<Movie id="4" name="StarWars (just if required)" />
....
</favoriteMovies>在这个问题上
<favoriteMovies>
<StarWars id="4">True</StarWars>
<KillBill id="6">False</KillBill>
....
</favoriteMovies>注意,我删除了KillBill,因为它被标记为“不喜欢”。
底线:保持XML文档的小,这样就不会有问题了。
发布于 2009-11-03 17:48:33
我不会将XML文档存储在数据库中(特别是因为它们似乎是传输类型的对象)。为什么不将数据以关系方式存储在数据库中呢?表单有利于捕获数据。XML有利于数据的传输,而数据库表则有利于数据的存储。由于您已经将电影存储在数据库中,所以应该很容易将其余的数据显式地存储在数据库中,而不是通过XML隐式存储。
https://stackoverflow.com/questions/1668880
复制相似问题