我正在为我正在创建的网站设置XML文件。 XML文件包含艺术(图像)细节。每个艺术记录可以有多种尺寸(尺寸1,尺寸2等)供购买和多个类别(cat1,cat2,cat3等)。为多个值设置xml文件的最佳方法是什么?以下是我能想到的两个选项。
...使用大小和类别的元素......
<?xml version='1.0' encoding='utf-8' ?>
<images>
<image id='' ImageName=''>
<title></title>
<sizes>
<size>size1</size>
<size>size2</size>
</sizes>
<categories>
<category>cat1</category>
<category>cat2</category>
</categories>
<description>
<short></short>
<long></long>
</description>
</image>
</images>
使用JQuery ajax,我使用以下内容引用每个大小/类别...
$(xml).find('image').each(function(){
$(this).find('size').each(function(){
var size = $(this).text();
{do something here with the size variable}
});
});
... ... OR
...使用大小和类别的属性......
<?xml version='1.0' encoding='utf-8' ?>
<images>
<image id='' ImageName='' sizes='size1 size2' category='cat1 cat2 cat3'>
<title></title>
<description>
<short></short>
<long></long>
</description>
</image>
</images>
使用JQuery ajax,我可以使用以下内容引用每个大小/类别...
$(xml).find('image').each(function(){
$(this).attr('size').split(' ');
{Loop through each split attribute}
});
非常感谢任何帮助。
答案 0 :(得分:1)
我会利用xml的内在特性来定义和记录它标记的数据中的关系。
使用元素表示多个值在概念上可以使对象的xml表示更接近模型,而不需要了解域来解释它。
<Image>
<Sizes>
<Size sizeName="size1"/>
<Size sizeName="size2"/>
</Sizes>
</Image>
这里很清楚,有两种尺寸。
字符串中的空格在xml中没有内在含义
<Image sizes="size1 size2" />
这可能很清楚有两种尺寸,但仅仅是因为你对尺寸的了解。
<Blarg bebos="sldkd eldks" />
这是sldkd eldks
的bebos值还是sldkd
和eldks
的两个bebo值?
但...
<Blarg>
<Bepos>
<Bepo value="sldkd"/>
<Bepo value="eldks"/>
</Bepos>
</Blarg>
您不希望在一年后返回项目,或者选择其他人的代码,目的是添加或更改功能,而不是意识到您必须经过额外的步骤才能使纯数据正常运行。< / p>
答案 1 :(得分:0)
没有单一的“正确”方法,但使用元素当然更灵活,因为您可以在需要时添加子元素。在我看来,当您想要检查给定值是否存在等时,XPath表达式对于元素而言比对于属性更简单。
我还会考虑这些类别是否可能重复。如果是这样,请考虑单独对类别建模并通过id引用它们。这样,例如,可以通过更改单个定义来重命名类别。
答案 2 :(得分:0)
如果要在XML中建模对象的多值属性,则使用子元素更清晰,更易于处理/搜索,更具可扩展性。但是使用空格分隔的属性(微语法的一个简单示例 - 这是您的应用程序而不是XML解析器可以理解的语法)可能更经济/高效。因此,只有在您能够满意地证明机器节省(例如空间和传输时间)确实是必要的并且证明额外的程序员工作量合理时,才使用空格分隔属性方法。