2010-08-18 1 views
0

Я преобразовываю документ DOM в XML в java с помощью javax.xml API. В результатеИсходные текстовые дочерние узлы с javax.xml.transform.Transformer

<tag> 
    <tag2>text</tag2> 
</tag> 

, но мне нужно, чтобы это было

<tag> 
    <tag2> 
     text 
    </tag2> 
</tag> 

Есть ли варианты, чтобы сделать это с текстом дочерних узлов? я не нашел

+1

Зачем вам нужны новые линии? Кажется немного необычным для структурированного формата данных, такого как XML. – GaryF

+0

Мне нужна новая строка, потому что пользовательская (и довольно уродливая) библиотека Fortran, которую мы используем для чтения XML, не любит данные, написанные как текст, иногда он читается правильно, а когда-то это не так :( –

+0

XML-парсер библиотеки Fortran что было бы лучше, если бы библиотека Fortran была исправлена. Что хорошего в библиотеке, которая утверждает, что читает XML, если она только понимает свой собственный идиоизм? Точка стандартного формата обмена данными - это инструменты, которые генерируют XML (один и тот же стандарт) сможет работать с ним.Если библиотека Fortran не понимает XML, вы можете также подать его в CSV. – LarsH

ответ

1

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

[line feed character] 
[n + i space characters]text[line feed character] 
[n space characters] 

где n зависит от глубины текущего элемента от корневого элемента.

Явно, если вы сравниваете значения xpath/tag/tag2 на обоих этих документах, они не совпадают.

+0

Отступ во второй строке слишком мал, должен быть [n + i пробелами символов] –

+0

Я заметил это –

+0

Это то, что я кодирую прямо сейчас, но я был в надежде на что-то вроде transformer.setOutputProperty (OutputKeys.PUT_STRING_CHILDREN_ON_NEW_LINE, «да»); –

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

  • Нет связанных вопросов^_^