Java: канонизация XML
Какой самый простой способ сделать каноническую форму XML файла на Java? У вас есть код для этого? Я нашел несколько ссылок в сети, например this, this и this, но я не могу заставить его работать:/
Спасибо,
Иван
EDIT: Я использовал предложенный там канонизатор, но я получаю странные результаты. Чтобы быть более точным, этот метод не удаляет пробелы между элементами... Вот что я получаю:
<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>
Ответы
Ответ 1
Canonicalizer класс Проект безопасности XML Apache:
Canonicalizer canon = Canonicalizer.getInstance(Canonicalizer.ALGO_ID_C14N_OMIT_COMMENTS);
byte canonXmlBytes[] = canon.canonicalize(yourXmlBytes);
String canonXmlString = new String(canonXmlBytes);
Ответ 2
Другим вариантом является nu.xom.canonical.Canonicalizer, если вы используете XOM, или если у вас в противном случае нет необходимости Безопасность Apache XML.