Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何按属性数对DOM XML元素进行排序?_Java_Xml_Xml Parsing_Domparser - Fatal编程技术网

Java 如何按属性数对DOM XML元素进行排序?

Java 如何按属性数对DOM XML元素进行排序?,java,xml,xml-parsing,domparser,Java,Xml,Xml Parsing,Domparser,是否有一种可行的方法允许按属性计数对元素排序?我主要关心的是性能 我想按从高到低的属性数对元素进行排序 e、 g.XML文档 <!-- 1 --> <element attr1="" attr2=""> <param name="" value=""/> <param name="" value=""/> <param name="" value=""/> <param name="" value=

是否有一种可行的方法允许按属性计数对元素排序?我主要关心的是性能

我想按从高到低的属性数对元素进行排序

e、 g.XML文档

<!-- 1 -->
<element attr1="" attr2="">
    <param name="" value=""/>
    <param name="" value=""/>
    <param name="" value=""/>
    <param name="" value=""/>
</element>

<!-- 2 -->
<element attr1="" attr2="" attr3"">
    <param name="" value=""/>
    <param name="" value=""/>
    <param name="" value=""/>
    <param name="" value=""/>
</element>

<!-- 3 --> 
<element attr1="">
    <param name="" value=""/>
    <param name="" value=""/>
    <param name="" value=""/>
    <param name="" value=""/>
</element>


在本例中,正确的顺序是2、1、3,与大多数XML转换一样,用于此工作的最佳工具是XSLT。以下是XSLT2.0,但在1.0中几乎同样简单

<xsl:template match="/*">
  <xsl:perform-sort select="element">
    <xsl:sort select="count(@*)" order="descending"/>
  </xsl:perform-sort>
</xsl:template>

与大多数XML转换一样,完成这项工作的最佳工具是XSLT。以下是XSLT2.0,但在1.0中几乎同样简单

<xsl:template match="/*">
  <xsl:perform-sort select="element">
    <xsl:sort select="count(@*)" order="descending"/>
  </xsl:perform-sort>
</xsl:template>