XML性能:元素与属性
我有一个关于XML设计的非常基本的问题。我有用于生成UI的XML。其格式如下:XML性能:元素与属性,xml,performance,Xml,Performance,我有一个关于XML设计的非常基本的问题。我有用于生成UI的XML。其格式如下: <Input> <Label>Enter Machine Name</Label> <ToolTip> Please enter the correct machine name</ToolTip> <Type>TextField</Type> </Input> 输入机器名 请输入正确的计算机名 文本字段
<Input>
<Label>Enter Machine Name</Label>
<ToolTip> Please enter the correct machine name</ToolTip>
<Type>TextField</Type>
</Input>
输入机器名
请输入正确的计算机名
文本字段
我的问题是
以上面的格式编写XML更好,还是以下面的格式编写XML更好,以获得更好的处理时间结果
<Input Label="Enter Machine Name"
ToolTip="Please enter machine name"
Type="TextField">
哪种类型的XML将在更短的时间内被解析?而属性将占用更少的空间,这对性能是一个优势,而SAX解析将为基于属性的设计生成更少的事件,这可以节省一分钟的时间,在绝大多数情况下,任何属性与元素的性能差异都不重要。 与大多数先验性能担忧一样,最好构建、测量和调整,前提是基本设计合理基本设计的稳健性不受元素与属性的影响。
您应该尝试对XML使用行业标准模式,并遵循它们在元素与属性方面的操作。如果您自己从头开始设计,请参见和其他同级答案。您应该使用元素,因为它是数据,请参见:
-
-
元素和属性在XML中都是常见的,所以我们希望解析器经过优化,能够很好地处理这两者。我想元素的查找速度要快一点,但我只查看了jQuery Sizzle结果:
-1(1)“您应该执行X,因为我真的很好奇您的说法,即“SAX解析将为基于属性的设计生成更少的事件”“。您能帮助我了解情况吗?@Dmitry:实现可能会有所不同,但SAX通常会为每个属性生成0或1个事件,为每个元素生成2个事件。(可以从start元素事件或通过单独的事件检索属性;元素通常有一个start和一个end事件。)但我真的想在这个答案中强调,这些差异几乎不重要(并且无论如何都依赖于实现)。在元素和属性之间进行选择时,有更重要的设计考虑因素,还有许多其他性能方面将压倒属性和元素之间的任何差异。因此SAX解析器将在一个事件(startElement)中记录属性名称和属性值,而此事件是发送的第一个相关事件,自动关闭避免了对末端标签的检查;要获取其innerHTML表示值且标记名表示键的元素,它需要完成属性解析,然后子元素的startElement查找键,然后才获取值,然后(在内部)浪费时间处理一个无用的endElement事件,然后再处理另一个事件?