gpt4 book ai didi

java - 是否有 Java 库来验证 XML 片段是较大 XML 文件的子集?

转载 作者:数据小太阳 更新时间:2023-10-29 02:42:46 27 4
gpt4 key购买 nike

我正在寻找可以执行以下操作的代码。给定一段 XML,说:

<c>Some text</c>

和一个完整的 XML 文件:

<a>
<b>
<c>Some text</c>
</b>
</a>

检查片段是否确实是完整 XML 文件的有效子集。我一直在看XMLUnit这看起来非常好,但它似乎只能相互验证完整的文件。

对于上面的示例,一个简单的字符串比较就可以了,但我想支持的其他功能可能是:

1) 子元素的顺序不重要。例如。

<b>
<c>Some text</c>
<d>Other text</d>
</b>

的有效子集
<a>
<b>
<d>Other text</d>
<c>Some text</c>
</b>
</a>

2) 忽略空格、制表符、换行等
3) XMLUnit 的框架特性是一个不错的选择,其中检查节点名称和结构,但不检查内容值。例如。 <c>Some text</c><c>Other text</c> 比较时有效.

最佳答案

我认为没有这样的库,但您可以通过以下方式解决它(如果您的 xml 片段以元素开头)。我假设您熟悉 XMLUnit。

public boolean isSubset(Document document, Element element) {
NodeList list = document.getElementsByTagName(element.getNodeName());
for (int i = 0; i < list.getLength(); i++) {
Element el = (Element) list.item(i);
Document clone = toNewDocument(el);
//compare element with clone with XMLUnit
//...
if (equal) {
return true;
}
}
return false;
}

private Document toNewDocument(Element el) {
// createing a new DOM-document...
Document document = documentBuilder.newDocument();
Node node = document.importNode(el, true);
document.getDocumentElement().appendChild(node);
return document;
}

关于java - 是否有 Java 库来验证 XML 片段是较大 XML 文件的子集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4276437/

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