Java: как расположить с отступом XML, сгенерированный преобразователем

Один прием для получения поведения, подобного этому (без отражения), должен принять params SomeObject[][] и также определить неявный оператор от SomeObject до SomeObject[]. Теперь можно передать смесь массивов SomeObject и элементы индивидуума SomeObject.

public class Item
{
    public string Text { get; }

    public Item (string text)
    {
        this.Text = text;
    }

    public static implicit operator Item[] (Item one) => new[] { one };
}

public class Print
{
    // Accept a params of arrays of items (but also single items because of implicit cast)

    public static void WriteLine(params Item[][] items)
    {
        Console.WriteLine(string.Join(", ", items.SelectMany(x => x)));
    }
}

public class Test
{
    public void Main()
    {
        var array = new[] { new Item("a1"), new Item("a2"), new Item("a3") };
        Print.WriteLine(new Item("one"), /* ... */ array, new Item("two")); 
    }
}
106
задан Mike 6 September 2009 в 03:29
поделиться

2 ответа

Вам необходимо включить «INDENT» и установить величину отступа для преобразователя:

t.setOutputProperty(OutputKeys.INDENT, "yes");
t.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2");

Обновление:


Ссылка: Как удалить текстовые узлы, содержащие только пробелы, из DOM перед сериализацией?

(Большое спасибо всем участникам, особенно @ marc-novakowski, @ james-murty и @saad) :

208
ответ дан 24 November 2019 в 03:47
поделиться

Если вам нужен отступ, вы должны указать его в TransformerFactory .

TransformerFactory tf = TransformerFactory.newInstance();
tf.setAttribute("indent-number", new Integer(2));
Transformer t = tf.newTransformer();
5
ответ дан 24 November 2019 в 03:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: