当前位置:  开发笔记 > Android > 正文

程序来分析很多XML

如何解决《程序来分析很多XML》经验,为你挑选了1个好方法。

我有很多XML文件,我想从它们生成一个报告.报告应提供以下信息:

root 100%
 a*1 90%
 b*1 80%
  c*5 40%

这意味着所有的文件有一个根元素,90%具有一个一个在根元素,80%具有一个b在根元素,40%具有5组Ç中的元素b.

例如,如果某些文档有4个c元素,大约5个和6个,它应该说:

c*4.3 4 6 40%

这意味着40%有4到6个c元素,平均值是4.3.

我正在寻找免费软件,如果它不存在我会写它.我即将这样做,但我考虑过检查它.我可能不是第一个必须分析并获得数千个XML文件的结构概述的人.



1> JeniT..:

这是一个XSLT 2.0方法.

假设$docs包含要扫描的文档节点序列,则需要为文档中显示的每个元素创建一行.你可以这样做:


  
  
  
  ...

然后你想在文件中找出该元素的统计数据.首先,找到文件中包含该名称的元素:


其次,您需要在每个文档中包含该名称的元素数量的序列:


现在你可以做计算了.平均的,最小和最大可与被计算avg(),min()max()功能.百分比只是包含元素的文档数除以格式化的文档总数.

把它放在一起:


  
  
  
  
  
  * 
  
   
  
   
  
   
  
  %
  


我在这里没有做的是根据元素的深度缩进线条.我刚按字母顺序排列元素,为您提供统计数据.有两个原因:首先,在某种结构中显示元素统计数据反映出它们在文档中的显示方式(尤其是因为不同的文档可能具有不同的结构),因此显着更难(就像在这里写的那样).其次,在许多标记语言中,文档的精确结构是不可知的(因为,例如,部分可以在部分内嵌套到任何深度).

我希望它仍然有用.

更新:

需要XSLT包装器和一些运行XSLT的指令吗?好.首先,开始使用Saxon 9B.

您需要将要分析的所有文件放在目录中.Saxon允许您使用特殊URI语法使用集合访问该目录(或其子目录)中的所有文件.如果您想要递归搜索或过滤您通过文件名查看的文件,那么值得查看该语法.

现在完整的XSLT:










  
    
    
    
    
    
    * 
    
     
    
     
    
     
    
    %
    

  
 


运行它你会做类似的事情:

> java -jar path/to/saxon.jar -it:main -o:report.txt dir=file:///path/to/your/directory?select=*.xml

这告诉Saxon使用名为的模板启动进程,maindir参数设置为file:///path/to/your/directory?select=*.xml并将输出发送到report.txt.

推荐阅读
echo7111436
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有