gpt4 book ai didi

java - 检查两个 svg 文件是否相同

转载 作者:行者123 更新时间:2023-12-05 07:58:26 25 4
gpt4 key购买 nike

我需要想出一种使用 Java 检测两个 SVG 文件是否相同的方法。我不太熟悉 SVG 的工作原理,但我认为文件-> 字符串和字符串比较不是可行的方法 - 有元素排序,一些可选参数可能会被省略,诸如此类。我最好怎么做?

以防万一 - 我需要它来测试一位同事正在制作的 SVG<->CGM 转换器。我正在考虑进行 SVG->CGM->SVG 往返转换并将最终结果与原始 SVG 进行比较。 测试此类转换器的有效方法,对吗?

最佳答案

您可以使用 XML-Unit 来比较两个 XML 字符串。要获取 XML 字符串,您可以阅读文件。

Maven 导入:

<dependency>
<groupId>org.xmlunit</groupId>
<artifactId>xmlunit-core</artifactId>
<version>2.8.2</version>
</dependency>

<dependency>
<groupId>org.xmlunit</groupId>
<artifactId>xmlunit-matchers</artifactId>
<version>2.8.2</version>
</dependency>
<dependency>
<groupId>org.xmlunit</groupId>
<artifactId>xmlunit-assertj3</artifactId>
<version>2.8.2</version>
</dependency>
<dependency>
<groupId>org.xmlunit</groupId>
<artifactId>xmlunit-parent</artifactId>
<version>2.8.2</version>
<type>pom</type>
</dependency>

读入 XML 字符串

String xml = new String(
Files.readAllBytes(xmlFile.toPath()), StandardCharsets.UTF_8);

检查:

public void isXmlEqual(String xmlString1, String xmlString2){

Diff diff = DiffBuilder.compare(xmlString1).withTest(xmlString2).ignoreComments().ignoreWhitespace().build();
Iterator<Difference> differenceIterator = diff.getDifferences().iterator();
int differenceSize = 0;
while (differenceIterator.hasNext()) {
Difference difference = differenceIterator.next();
log.info( difference.toString() );
differenceSize++;
}
if (differenceSize == 0){
log.info( "Images are the same" );
}
}

关于java - 检查两个 svg 文件是否相同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24532535/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com