相关疑难解决方法(0)

XML排序/格式化工具

是否有任何工具可以(漂亮地打印)格式化XML文件以及对其元素和属性进行排序?

xml formatting

15
推荐指数
4
解决办法
4万
查看次数

LXML - 排序标签顺序

我有一个遗留的文件格式,我正在转换为XML进行处理.结构可概括为:

<A>
    <A01>X</A01>
    <A02>Y</A02>
    <A03>Z</A03>
</A>
Run Code Online (Sandbox Code Playgroud)

标签的数字部分可以从01到99,并且可能存在间隙.作为处理的一部分,某些记录可能添加了其他标记.处理完成后,我通过追踪树将文件转换回传统格式.文件相当大(约150,000个节点).

这样做的一个问题是,某些使用传统格式的软件假定标签(或转换时的字段)将按字母数字顺序排列,但默认情况下,新标签将添加到分支的末尾,然后分支的末尾导致它们以错误的顺序从迭代器中出来.

我可以使用XPath来查找,每次我来添加一个新的标签基于标签的名字前述兄弟,但我的问题是,是否有一个简单的树排序一次只是在出口前路?

编辑:

我想我总结了结构.

记录可以包含如上所述的几个级别,以提供如下内容:

<X>
    <X01>1</X01>
    <X02>2</X02>
    <X03>3</X03>
    <A>
        <A01>X</A01>
        <A02>Y</A02>
        <A03>Z</A03>
    </A>
    <B>
        <B01>Z</B02>
        <B02>X</B02>
        <B03>C</B03>
    </B>
</X>
Run Code Online (Sandbox Code Playgroud)

python xml lxml

6
推荐指数
2
解决办法
8897
查看次数

递归地对任意XML文档的元素进行排序

我正在尝试对一些XML文档进行排序和规范化.期望的最终结果是:

  1. 每个元素的子元素都按字母顺序排列
  2. 每个元素属性都按字母顺序排列
  3. 评论已删除
  4. 所有元素都间隔适当(即"漂亮印刷").

除了#1,我已经实现了所有这些目标.

我一直在使用这个答案作为我的模板.这是我到目前为止:

import javax.xml.transform.stream.StreamResult
import javax.xml.transform.stream.StreamSource
import javax.xml.transform.TransformerFactory
import org.apache.xml.security.c14n.Canonicalizer

// Initialize the security library
org.apache.xml.security.Init.init()

// Create some variables

// Get arguments

// Make sure required arguments have been provided

if(!error) {
    // Create some variables
    def ext = fileInName.tokenize('.').last()
    fileOutName = fileOutName ?: "${fileInName.lastIndexOf('.').with {it != -1 ? fileInName[0..<it] : fileInName}}_CANONICALIZED_AND_SORTED.${ext}"
    def fileIn = new File(fileInName)
    def fileOut = new File(fileOutName)
    def xsltFile = new File(xsltName)
    def temp1 = new File("./temp1") …
Run Code Online (Sandbox Code Playgroud)

xml xslt groovy

5
推荐指数
1
解决办法
2028
查看次数

标签 统计

xml ×3

formatting ×1

groovy ×1

lxml ×1

python ×1

xslt ×1