Java androidxml规范化

Java androidxml规范化,java,android,xml,xml-parsing,canonicalization,Java,Android,Xml,Xml Parsing,Canonicalization,我正在尝试规范化从android设备上的服务器接收到的一些xml。然而,Android似乎不喜欢org.apache.xml.security.c14n.Canonicalizer.canonicalize(stringinputText)。这是因为Android的DOM库不喜欢自动抛出异常的DocumentBuilder.setValidating()(由Canonicalizer使用)。 我尝试直接从Canonicalizer复制代码,但没有那行麻烦的代码: DocumentBuilderF

我正在尝试规范化从android设备上的服务器接收到的一些xml。然而,Android似乎不喜欢
org.apache.xml.security.c14n.Canonicalizer.canonicalize(stringinputText)
。这是因为Android的DOM库不喜欢自动抛出异常的
DocumentBuilder.setValidating()
(由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?

我也遇到了同样的问题,最终使用了以下方法:

InputStream is = new ByteArrayInputStream(byteArrayOutputStream.toByteArray());
Builder parser = new Builder();
Document doc = parser.build(is);
ByteArrayOutputStream canonicalOs = new ByteArrayOutputStream();
Canonicalizer canonicalizer = new Canonicalizer(canonicalOs);
canonicalizer.write(doc);      
byte[] canonXmlBytes = canonicalOs.toByteArray();

包括在您的“libs”文件夹中。

我也遇到过同样的问题,并最终以以下方式使用:

InputStream is = new ByteArrayInputStream(byteArrayOutputStream.toByteArray());
Builder parser = new Builder();
Document doc = parser.build(is);
ByteArrayOutputStream canonicalOs = new ByteArrayOutputStream();
Canonicalizer canonicalizer = new Canonicalizer(canonicalOs);
canonicalizer.write(doc);      
byte[] canonXmlBytes = canonicalOs.toByteArray();
包括在“libs”文件夹中