gpt4 book ai didi

java - 比较java单元文本中的Xml,忽略节点中的属性

转载 作者:行者123 更新时间:2023-11-30 02:39:56 26 4
gpt4 key购买 nike

我必须比较 2 个 xml 字符串。

实际

<?xml version="1.0" encoding="utf-8"?>
<entry xmlns="http://www.w3.org/2005/Atom"
xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata"
xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices"
xml:base="http://localhost:49531/ODataV2.svc/ODataV2.svc/">
<content type="application/xml">
<m:properties>
<d:ID>2000</d:ID>
<d:ReleaseDate>1992-01-01T00:00:00</d:ReleaseDate>
<d:Rating>4</d:Rating>
<d:Price>2.5</d:Price>
</m:properties>
</content>
</entry>

预计

<?xml version="1.0" encoding="utf-8"?>
<entry xmlns="http://www.w3.org/2005/Atom"
xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata"
xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices"
xml:base="http://localhost:55615/ODataV2.svc/ODataV2.svc/">
<content type="application/xml">
<m:properties>
<d:ID>2000</d:ID>
<d:ReleaseDate>1992-01-01T00:00:00</d:ReleaseDate>
<d:Rating>4</d:Rating>
<d:Price>2.5</d:Price>
</m:properties>
</content>
</entry>

下面的代码失败,因为根节点中属性 xml:base 中的端口号不同。

XMLAssert.assertXMLEqual(Actual, Expected);

Expected attribute value 'http://localhost:55615/ODataV2.svc/ODataV2.svc/' but was 'http://localhost:49531/ODataV2.svc/ODataV2.svc/'

单元测试中的端口号在运行时发生变化。有没有办法忽略特定属性并比较 xml。

最佳答案

找到了解决方案。我使用 custommonkey 库进行 xml 比较。而不是 XMLAssert.assertXMLEqual(Actual, Expected);

我使用下面的代码来确定差异。

Diff diff=XMLUnit.compareXML(Expected,Actual);
diff.overrideDifferenceListener(new DifferenceListener() {
public void skippedComparison(Node arg0, Node arg1) {
}

public int differenceFound(Difference difference) {
if (difference.getControlNodeDetail().getXpathLocation().contains("entry")) {
return DifferenceListener.RETURN_IGNORE_DIFFERENCE_NODES_IDENTICAL;
} else {
return DifferenceListener.RETURN_ACCEPT_DIFFERENCE;
}
}
});
XMLAssert.assertXMLIdentical(diff,true);

关于java - 比较java单元文本中的Xml,忽略节点中的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42086061/

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