- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在我们的项目中,我们希望从 xml 生成 Excel 报告,该报告包含两个文件夹的所有差异。
我尝试从 xml 节点获取文件的完整路径,但我对节点名称感到困惑,因为所有父节点(foldercomp)都具有相同的名称。
并且可以为此xml格式创建xsd,具有相同类名的内部类在xsd复杂类型中不接受。
你能帮我解决这个问题吗
下面是 bcompare xml 报告:
<?xml version="1.0" encoding="utf-8"?>
<bcreport created="16-11-2017 20:20:54">
<foldercomp>
<ltpath>E:\compare\CODE1</ltpath>
<rtpath>E:\compare\CODE2</rtpath>
<mode>Differences</mode>
<foldercomp>
<lt>
<name>Dir1</name>
<size>696</size>
</lt>
<rt>
<name>Dir1</name>
<size>846</size>
</rt>
<foldercomp>
<lt>
<name>Dir3</name>
<size>424</size>
</lt>
<rt>
<name>Dir3</name>
<size>431</size>
</rt>
<foldercomp>
<lt>
<name>Dir4</name>
<size>281</size>
</lt>
<rt>
<name>Dir4</name> <!-- E:\compare\CODE2\Dir1\Dir3\Dir4 -->
<size>288</size>
</rt>
<filecomp status="rtnewer">
<lt>
<name>File5 (2).txt</name> <!-- E:\compare\CODE1\Dir1\Dir3\Dir4\File5 (2).txt -->
<size>139</size>
</lt>
<rt>
<name>File5 (2).txt</name> <!-- E:\compare\CODE2\Dir1\Dir3\Dir4\File5 (2).txt -->
<size>146</size>
</rt>
</filecomp>
</foldercomp>
</foldercomp>
<filecomp status="rtonly">
<rt>
<name>File1 (1).txt</name> <!-- E:\compare\CODE2\File1 (1).txt -->
<size>143</size>
</rt>
</filecomp>
</foldercomp>
<foldercomp>
<lt>
<name>Dir2</name>
<size>286</size>
</lt>
<rt>
<name>Dir2</name>
<size>296</size>
</rt>
<filecomp status="rtnewer">
<lt>
<name>File2.txt</name> <!-- E:\compare\CODE1\Dir2\File2.txt -->
<size>143</size>
</lt>
<rt>
<name>File2.txt</name> <!-- E:\compare\CODE2\Dir2\File2.txt -->
<size>153</size>
</rt>
</filecomp>
</foldercomp>
<filecomp status="rtnewer">
<lt>
<name>File1 (2).txt</name> <!-- E:\compare\CODE1\File1 (2).txt -->
<size>132</size>
</lt>
<rt>
<name>File1 (2).txt</name> <!-- -E:\compare\CODE1\File1 (2).txt -->
<size>139</size>
</rt>
</filecomp>
<filecomp status="rtnewer">
<lt>
<name>File1 (3).txt</name> <!-- E:\compare\CODE1\File1 (3).txt -->
<size>144</size>
</lt>
<rt>
<name>File1 (3).txt</name> <!-- E:\compare\CODE2\File1 (3).txt -->
<size>150</size>
</rt>
</filecomp>
</foldercomp>
lt - CODE1、rt- CODE2、foldercomp 和 filecomp 标签,用于文件夹和文件中的差异
最佳答案
XML 输出对我来说很有意义。我从中了解到的是:
Dir1
|
+-- Dir3
| |
| +Dir4
| |
| +File5
(etc)
一个文件夹可以有多个文件夹,一个文件夹可以有很多文件。对于每个比较,都有左项目和右项目。所以,你需要做的是重新思考你的解析策略。每个foldercomp 至少有2 个(可能更多)子级,每个filecomp 标记有两个(或更多)子级。
如果我是你,我会使用foldercomp和filecomp打开标签将行和列值增加1,关闭标签以减少列,同时以类似的方式将行增加1。 lt 和 rt 打开标签以增加行值(而不是列)并忽略相同的关闭标签。我会以粗体打印文件夹和文件名,并将差异保留为正常。
filecomp 上的状态让您了解差异的本质。所以,如果是rtnew,就意味着,它被添加了。我会使用绿色等。
通过 sax 解析器来实现它应该太难了。
我希望这是有道理的。
编辑:
如果您需要 SAX 解析器的示例代码,here it is 。
我已经给了你领导权,但我不会做你的工作。抱歉。
编辑2:
使用 SAX 解析器非常简单。查看上面的文档和示例。
将使用 sax 解析器解析 XML 视为 switch/case 语句。当当前标签是某事时,执行您需要执行的操作,当执行其他操作时,执行所需执行的操作等。您可能还需要保留上下文。
switch(tag){
foldercomp:
ops
filecomp:
ops
rt:
ops
lt:
ops
}
你自己尝试一下就知道了。如果你在实现它时遇到困难,其他 stackoverflow 用户,包括我自己,将很乐意提供帮助。但你需要先尝试一下。
干杯。
关于java - 如何使用 DOM/SAX 或 java 中的任何解析器解析 bcompare xml 报告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47333453/
我一直在尝试为 SAX 解析器设置 UI 线程和处理程序。这是我没有实现 UI 线程和处理程序的解析器: public class AndroidXMLReader extends ListActiv
我正在尝试读取一个大型 XML 文档,并且我想以 block 的形式读取它,而不是 XmlDocument 将整个文件读入内存的方式。我知道我可以使用 XmlTextReader 来做到这一点,但我想
我正在尝试将 11384 个 XML 文件解析到一个 SQLite 数据库中。其中之一: ]> 1 2 我正在使用 SAX 解析器: pub
我需要用 Perl 解析 XML 文件。文件的一部分单独存储,并作为系统实体插入。不过,这个问题很常见。但是我无法获得任何信息来解决它。 ]> &externalContent; 当使
我正在尝试从 xsd 解析 HL7 消息定义。我将模式定义分成两个文件。第一个文件包含实际的消息定义,第二个文件包含消息中的段定义。 我正在尝试调整示例代码以从此处解析 XML https://gis
我正在使用 SAX 解析 MathML 表达式(尽管它是 MathML 的事实可能并不完全相关)。输入字符串示例为 λ 为了让 SAX 解
我正在尝试使用 Java 和 SAX 为 Android 设备解析 XML 文件。我从互联网上获取,在解析它时,我得到一个 ExpatException :字符“é”的格式不正确(无效标记)。有没有办
我正在尝试使用java中的sax读取xml文件。我只获得 endElement 的输出,但无法找出 startElement 出了什么问题。 这是我的处理程序: public class XMLHan
我正在使用 SAX 解析器来解析具有父级及其子级标记的 XML,如下所示:
我正在尝试从 RSS 提要中提取数据。 RSS 链接 - http://www.thehindu.com/sport/?service=rss ? 这是我的默认处理程序的字符方法。 public vo
我尝试执行下面的代码,但我的 SAX 解析器没有调用 startElement 方法。 下面是我的代码: package getTableStructure; import java.util.Lis
我正在满足一项要求,即我需要拆分大型 XML 并进一步处理。 这是 XML 示例,它可以变成单行。 yongjin 这是我的代码: import java.util.Arrays; import ja
我正在尝试将标签的内容放入我的 java Sax 解析器中的变量中。但是,Characters 方法仅返回 Char 数组。有没有办法将 Char 数组转换为 Int??? public void c
我有下面的代码.. System.setProperty("http.proxyHost","176.6.129.25") ; System.setProp
如何使用 SAX 显示树中最大深度的节点名称。该算法很适合我理解这个概念.. 例如,我应该如何使用 startelement、endelement、startdocument、enddocument
有没有可行的方法使用默认的处理程序类来查找对应的XML标签?例如... 1 1 我想使用 startElement() 和 endElement() 方
我想使用 SAX 解析器从 xml 文件中解析一些数据。我的xml如下: Pies & past Fruits 为了解析这些数据,我扩展了 DefaultHandler。 解析后的输出
我正在构建一个创建 XML 的流程(从各种来源并出于我事先不知道的各种目的),并且我希望将生成的 XML 直接注入(inject)到标准 XML 处理中,例如 SAX、StAX和 DOM。我已经完成了
我有一个由 MS Excel 创建的 XML 文件,其中包含如下元素: 22. Department"GS "NAES "ABCDEF"
我在使用 java sax 解析器打开 stackoverflow 帖子 XML 转储时遇到问题。它识别每个元素的结尾,但似乎跳过了 startElement 方法。我使用示例代码: try {
我是一名优秀的程序员,十分优秀!