Java:XML规范化

Java:XML规范化,java,xml,canonicalization,Java,Xml,Canonicalization,用Java制作XML文件的标准格式最简单的方法是什么?你有没有一些已经完成的代码?我在网上找到了几个链接,如,和,但我无法使其正常工作:/ 谢谢 伊万 编辑:我使用了下面提出的规范化器,但我得到了奇怪的结果。更精确地说,此方法不会删除元素之间的空白。。。这就是我得到的: <Metric xmlns="http://www.ibm.com/wsla" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="total_memor

用Java制作XML文件的标准格式最简单的方法是什么?你有没有一些已经完成的代码?我在网上找到了几个链接,如,和,但我无法使其正常工作:/

谢谢

伊万

编辑:我使用了下面提出的规范化器,但我得到了奇怪的结果。更精确地说,此方法不会删除元素之间的空白。。。这就是我得到的:

<Metric xmlns="http://www.ibm.com/wsla" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" name="total_memory_consumption_metric" type="double" unit="Mbit" xsi:schemaLocation="http://www.ibm.com/wsla WSLA.xsd">                        <Source>ServiceProvider</Source>                        <MeasurementDirective resultType="double" xsi:type="StatusRequest">                              <RequestURI> ***unused*** </RequestURI>                        </MeasurementDirective>                  </Metric>
ServiceProvider***未使用***
上的课程

初始化库

org.apache.xml.security.Init.init(); 
转换XML

Canonicalizer canon = Canonicalizer.getInstance(Canonicalizer.ALGO_ID_C14N_OMIT_COMMENTS);
byte canonXmlBytes[] = canon.canonicalize(yourXmlBytes);
String canonXmlString = new String(canonXmlBytes);

另一种选择是,如果您正在使用XOM,或者您不需要Apache XML安全性。

对于以前没有使用过Apache XML安全性库的任何人,在调用该库中的任何代码之前,必须使用静态方法“org.Apache.XML.Security.Init.Init();”初始化库,否则你会出错。@Stew的要点非常重要。这应该是答案本身的一部分。我发现这个解决方案对规范化后变成“?”的表情符号不起作用。@Stew我在原始答案中添加了你的库初始化。迟做总比不做强:)同样的问题,你现在解决了吗?这是更好的选择。在我的例子中,我首先调用序列化程序,然后将结果定向到规范化程序。结果是一个更具可读性的规范XML。