Android デバイスのサーバーから受信した xml を正規化しようとしています。ただし、Android は気に入らないようですorg.apache.xml.security.c14n.Canonicalizer.canonicalize(String inputText)
。DocumentBuilder.setValidating()
これは、Android の DOM ライブラリが、自動的に例外をスローする (Canonicalizer によって使用される) のを好まないためです。その面倒な行なしで Canonicalizer から直接コードをコピーしようとしました:
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
InputSource in = new InputSource(new ByteArrayInputStream(inputBytes));
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse(in);
byte result[] = Canonicalizer.getInstance(canonicalizationMethod).canonicalizeSubtree(doc);
ただし、これは適切に正規化できません。xml タグ内の属性は、必要に応じて名前空間を最初に持つように並べ替えられません。
Androidでxmlを実質的に正規化する他の方法はありますか?