2017-02-17 4 views
0

У меня проблема с форматированием пробелов на Java. Я добавляю новый атрибут в свой файл, но у него неправильный формат.XML-форматирование пробелов в Java

Attr attr = doc.createAttribute("name"); 
    attr.setValue("name"); 
    element.setAttributeNode(attr); 
    element.setTextContent("Something=" + this.thumbnailCacheSize); 

    NodeList items = doc.getElementsByTagName("mbean"); 
    Node e = items.item(0); 
    e.appendChild(element); 
    TransformerFactory transformerFactory = TransformerFactory.newInstance(); 
    Transformer transformer = transformerFactory.newTransformer(); 
    transformer.setOutputProperty(OutputKeys.INDENT,"yes"); 
    DOMSource source = new DOMSource(doc); 
    StreamResult result = new StreamResult(filepath); 

    transformer.transform(source,result); 

Он должен выглядеть следующим образом:

<?xml version="1.0" encoding="UTF-8" standalone="no"?> 
<server> 
    <mbean code="code" name="name"> 
    <attribute name="name3">Something3=500</attribute> 
    <attribute name="name2">Something2=500</attribute> 
    <attribute name="name1">Something1=500</attribute> 
    <attribute name="name">Something=500</attribute> 
    </mbean> 
</server> 

Но, как:

<?xml version="1.0" encoding="UTF-8" standalone="no"?> 
<server> 
<mbean code="code" name="name"> 
    <attribute name="name3">Something3=500</attribute> 
    <attribute name="name2">Something2=500</attribute> 
    <attribute name="name1">Something1=500</attribute> 
    <attribute name="name">Something=500</attribute> 
</mbean> 
</server> 

Когда я использовал: transformer.setOutputProperty ("{} http://xml.apache.org/xslt отступа-количество", " 4");

я получаю:

<?xml version="1.0" encoding="UTF-8" standalone="no"?> 
<server> 
<mbean code="code" name="name"> 
    <attribute name="name3">Something3=500</attribute> 
    <attribute name="name2">Something2=500</attribute> 
    <attribute name="name1">Something1=500</attribute> 
    <attribute name="name">Something=500</attribute> 
    </mbean> 
</server> 
+0

Ваш вопрос будет понятнее, если у вас не было элементов смешения с именем «атрибут» ... –

ответ

0

Попробуйте это.

Transformer transformer = transformerFactory.newTransformer(); 
transformer.setOutputProperty(OutputKeys.INDENT, "yes"); // enable indent 
transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "4"); // 4 is indent space (default is zero) 
+0

Это работает, но теперь у меня есть правильный отступ в , но в <атрибут .../> нет. (Как в моем сообщении выше.) –

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