我们提供安全,免费的手游软件下载!
有多种报告文件需要处理,目前是手动将报告信息填入Excel表格中进行统计。通过与用户沟通和查看提供的文件,发现这些文件都是HTML格式的静态资源,包含了js、img等内容。
为了实现新功能,需要在现有系统上进行扩展。由于现有系统是Java后端服务,因此决定使用Java进行文档解析,而不是之前学习的Python。
在选择方案时,考虑到Python需要单独部署服务,而Java有JSOUP库可用,因此决定使用JSOUP进行文档解析。
对于不同类型的报告文件,它们的存储方式各不相同。
第一种单HTML文件: 这种情况比较简单,只需要读取文件路径并直接访问文件内容即可。
第二种单Zip压缩文件: 对于单层压缩文件,可以使用zipFile的API进行访问,逐个提取压缩条目并判断条目名称,然后通过zipFile打开读取流对条目进行读取。读取完成后需要释放资源。
第三种多Zip嵌套压缩文件: 对于嵌套压缩文件,需要解压两次才能访问文件。在读取内嵌的Zip文件时可能遇到编码问题,需要根据操作系统设置读取编码。此外,由于ZipFile只对单层压缩有用,对于多层压缩文件就无法支持。针对这种情况,上传的文件中只关心是否存在一个内嵌的压缩文件。在程序中根据条件使用ZipFile读取输入流,转换成Zip输入流,然后对压缩文件进行读取。读取后需要释放资源。
一、常见API方法: 通过使用ownText方法可以获取元素自己的文本内容,过滤掉其他嵌套的元素文本。另外,也可以直接使用cssQuery方法进行查询。
二、使用兄弟元素查找对应关系: 有些情况下,元素按文档结构应该是一个逐层关联的结构,但实际上是摊开来的结构。在这种情况下,只能通过元素的顺序推断结构。可以通过获取当前元素和下一个元素的兄弟元素下标值,以及将idp元素的兄弟元素下标值取出,来判断元素之间的关系。
三、父子元素操作获取兄弟元素: 在处理报告明细列表时,发现标题和摘要信息是动态的。因此,采用parent() + child()方式进行操作,通过父元素的indexOf方法获取当前摘要行的下标,进而确定下一个明细行的下标。这种方式相比select方法不用从元素集合中获取,而是直接定位唯一的一个元素。
热门资讯