2016-06-14 4 views
0

У меня есть файлы XML, где мне нужно удалить только 1 атрибут.Java - сохранить пробелы после сохранения XML

После сохранения редактируемого XML пробелы удалены, что мне нужно! (см. изображение)

Когда я теряю пробелы?

Когда я разбираю xml в документе? Или когда я преобразовываю обратно в xml?

Я уже использую много выходных Propertys из Java Transformer, как:

transformer.setOutputProperty(OutputKeys.ENCODING, encoding); 
    transformer.setOutputProperty(OutputKeys.INDENT, "yes"); 
    transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2"); 
    transformer.setOutputProperty(OutputKeys.DOCTYPE_PUBLIC, "yes"); 
    transformer.setOutputProperty(OutputKeys.CDATA_SECTION_ELEMENTS, "RequestMessage Code"); 

, чтобы избежать других проблем форматирования.

Есть ли способ сохранить пробелы?

Спасибо

EDIT 1: XSL я использую, чтобы избежать алфавитного порядка

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xalan="http://xml.apache.org/xslt" version="2.0"> 
    <xsl:output method="xml" encoding="UTF-8" indent="yes" xalan:indent-amount="2"/> 

    <!--Identity transformation (see http://www.w3.org/TR/xslt#copying).--> 
    <xsl:template match="@*|node()"> 
     <xsl:copy> 
      <xsl:apply-templates select="@Item"/> 
      <xsl:apply-templates select="@Name"/>    
      <xsl:apply-templates select="@Include"/> 
      <xsl:apply-templates select="@Variant"/> 
      <xsl:apply-templates select="@Authorization"/> 
      <xsl:apply-templates select="@Alias"/> 
      <xsl:apply-templates select="@Source"/> 
      <xsl:apply-templates select="@Field"/> 
      <xsl:apply-templates select="@DgMemberName"/> 
      <xsl:apply-templates select="@DgGroupName"/> 
      <xsl:apply-templates select="@Target"/> 
      <xsl:apply-templates select="@Host"/> 
      <xsl:apply-templates select="@DataGroup"/> 
      <xsl:apply-templates select="@*|node()"/> 
     </xsl:copy> 
    </xsl:template> 
</xsl:stylesheet> 

Here u see the Diff between the two XML files

+2

Зачем вам нужна связка между атрибутами? Я сомневаюсь, что у трансформатора есть какой-то вариант для такой странной вещи. – Berger

+0

Его требование. С пространством это проще читать. –

+0

Попробуйте увеличить количество отступов до некоторого более высокого значения. –

ответ

1

Я думаю, что ответ на ваш вопрос в том, что она не может быть сделана с помощью любого легкодоступный XML-сериализатор.

Я сочувствую этому требованию, потому что у меня тоже есть файлы XML. Но я думаю, что это довольно редкий случай использования, если вы хотите его решить, вам нужно написать собственный сериализатор.

Смежные вопросы