Xsd 如何获得由XML解析器解析的有序列表?

Xsd 如何获得由XML解析器解析的有序列表?,xsd,Xsd,我使用的是xsd模式文件;在那里,我指定了一个有序列表。 在分析此类XML节点时 “元素_1”“元素_2”“元素_3” (这是有效的XML语法) …我知道的所有XML解析器都将其作为单个节点元素进行解析。 有没有办法让XML解析器帮我解析这个列表(以列表、数组或其他形式返回),或者我必须自己解析它?为什么不利用XML的能力来构造数据,并将每个元素放在它自己的XML元素中呢?e、 g <myOrderedList> <element>1</element>

我使用的是xsd模式文件;在那里,我指定了一个有序列表。 在分析此类XML节点时

“元素_1”“元素_2”“元素_3”

(这是有效的XML语法)

…我知道的所有XML解析器都将其作为单个节点元素进行解析。
有没有办法让XML解析器帮我解析这个列表(以列表、数组或其他形式返回),或者我必须自己解析它?

为什么不利用XML的能力来构造数据,并将每个元素放在它自己的XML元素中呢?e、 g

<myOrderedList>
   <element>1</element>
   <element>2</element>
   <element>3</element>
</myOrderedList>

1.
2.
3.
否则,您必须在XML解析器为您执行的解析工作的基础上实现解析(尽管是以一种简单的方式)


如果您执行上述操作,解析器将返回有序列表,而无需进行任何进一步的工作,并且/或者您可以使用标准的XML工具(如XSLT/XQuery等)更轻松地处理它。

列表类型中的值始终由空格分隔,因此您可以轻松地通过标记器来获得值列表。 有一些类似XSLT2.0 schema aware的技术可以看到这样一个元素的值列表

使用另一个答案中建议的元素也是一种解决方案,可以简化处理过程。在XML中,子节点是有序的,所以您不必担心这一点。一种可能的代表是:

<myOrderedList>
   <value>element_1</value>
   <value>element_2</value>
   <value>element_3</value>
</myOrderedList>

元素_1
元素2
元素3

据我所知,XML子节点不是按性质排序的。不过,大多数(全部?)XML解析器将按文档顺序返回它们。因此,它们将按惯例订购。如果我想强制执行排序,我必须在这种情况下添加一个人工的订单标记或属性。另一方面,如果我在xsd中将列表声明为有序列表,那么我确实有严格的顺序。