我有两个由用户填写的网络表单。它们包含不同类型的字段:文本框,单选按钮,复选框(单个或组)。用户提交的所有信息都存储在数据库的XML字段中。
我的问题是: XML文件中的字符串有哪些良好做法。
现在我喜欢这个:
文字框,例如:txtName
我放入<Name>John</Name>
代码。
广播框,例如:rdbSex
我放入<Sex>Male</Sex>
。
复选框组我放入一个XML标记,并为每个复选框项指定true
或false
,例如:
<favoriteMovies>
<StarWars>True</StarWars>
<KillBill>False</KillBill>
....
</favoriteMovies>
电影存储在一个表中的数据库中,每个表都有一个ID。我应该还将它存储在XML文件中吗?像这样:
<favoriteMovies>
<StarWars id="4">True</StarWars>
<KillBill id="6">False</KillBill>
....
</favoriteMovies>
或者可能只存储选定的选项(在这种情况下为withoud KillBill):
<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表单元素的规则?
答案 0 :(得分:1)
我认为你应该采取务实的方式:使用原子值的属性可以导致更小的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文档较小,不会出现问题。
答案 1 :(得分:1)
我会这样:
1)将您想要放入XML的内容视为对象
2)找出最适合人类对象的属性,将其置于标记
之间3)装饰对象的每个其他属性,将它们作为标记属性
我将重新修改鲁本斯的例子:
<favoriteMovies>
<Movie id="4">StarWars (just if required)</Movie>
....
</favoriteMovies>
我移动了这个名字,因为这是最能描述电影的内容(对于人类而言),因为如果你有特殊字符,你将能够<![CDATA[ ]]>
他们......
希望这有帮助
答案 2 :(得分:0)
我不会将XML文档存储在数据库中(特别是因为它们似乎是传输类型对象)。为什么不在数据库中以关系方式存储数据。表单适用于捕获数据。 XML适用于传输数据,数据库表适用于存储数据。由于您已经将电影存储在数据库中,因此应该很容易将其余数据显式存储在数据库中,而不是通过XML隐式存储。