Java XML规范化程序问题
我正在使用包Java XML规范化程序问题,java,xml,canonicalization,Java,Xml,Canonicalization,我正在使用包org.apache.xml.security.c14n对XMLs进行规范化。我使用以下代码: private String CanonicalizeXML(String XML) throws InvalidCanonicalizerException, CanonicalizationException, ParserConfigurationException, IOException, SAXException { Canonicalizer canon = Can
org.apache.xml.security.c14n
对XMLs进行规范化。我使用以下代码:
private String CanonicalizeXML(String XML) throws InvalidCanonicalizerException, CanonicalizationException, ParserConfigurationException, IOException, SAXException {
Canonicalizer canon = Canonicalizer.getInstance(Canonicalizer.ALGO_ID_C14N_OMIT_COMMENTS);
return new String(canon.canonicalize(XML.getBytes()));
}
然而,它似乎并没有像我预期的那样工作,因为它没有删除元素之间任何不必要的空格。我做错什么了吗
谢谢
Ivan您的xml文档是否引用dtd或模式?如果没有这些空白,解析器就无法知道哪个空白是重要的,因此必须保留它 我认为可能是你的期望不正确: 您没有说明XML规范化的哪个版本,但1.0和1.1都说明: 字符内容中的所有空白都是 保留(不包括删除的字符) 在换料过程中(正常化)
org.apache.xml.security.c14n不会删除空白 我通过在SAXBuilder上设置setIgnoringBoundaryWhitespace=true来解决:
SAXBuilder builder = new SAXBuilder ();
builder.setIgnoringBoundaryWhitespace(true);
org.jdom2.Document doc = builder.build(is);
DOMOutputter out = new DOMOutputter();
Document docW3 = out.output(doc);
隐马尔可夫模型。。。这解释了很多。我没有模式,但我显然必须创建一个。或者有没有另一种方法可以强制它删除不相关的空格?类似于一个非常简单的模式之类的东西。我想要任何删除空格的版本。如何做到这一点?