0

Java EEアプリケーションで、自動生成された2つの大きなXMLを比較する必要がある場合があります。両方のXML(タグと値)が等しいかどうかを確認する必要があります。

を使ってみXMLUnitましたが、タグの間にスペースがあっても返されるようなものですfalse(これらのXMLは正しく自動生成されます!)。これを行う、または独自のロジックを書き留める効果的な方法はありますか?

4

4 に答える 4

1

StAXをお勧めします。大きなファイルで作業するのが最善です。これはこのような何かかもしれません

private boolean compare(XMLEventReader xr1, XMLEventReader xr2) throws XMLStreamException {
    for (;;) {
        XMLEvent e1 = nextTag(xr1);
        XMLEvent e2 = nextTag(xr2);
        if (e1 == null || e2 == null) {
            return e1 == e2;
        }
        if (!equals(e1, e2)) {
            return false;
        }
    }
}

private static XMLEvent nextTag(XMLEventReader xr) throws XMLStreamException {
    while (xr.hasNext()) {
        XMLEvent e = xr.nextEvent();
        if (e.getEventType() == XMLStreamConstants.START_ELEMENT) {
            return e;
        }
    }
    return null;
}

private boolean equals(XMLEvent e1, XMLEvent e2) {
    // compare attributes and content
    return false;
}
于 2013-02-08T11:32:56.753 に答える
0

組み込みのdiffツールを備えたエディターを使用できます。私はnetbeansエディタを使用してファイルを比較します。早くて簡単だと思います。

于 2013-02-08T10:11:47.760 に答える
0

jaxbを使用して解析し、xmlをPOJOに変換します

上記のPOJOにobject.equals()を実装します

次に、コンパレータを使用して解析されたオブジェクトを比較します

于 2013-02-08T09:58:54.083 に答える