2010-07-26 2 views
0

Что было бы лучшим способом разобрать, например, строку ниже и сделать из него действительный XML-документ с помощью java. Так, например, «\ b» будет преобразован в <b> </b>, пробелы до </space> и т. Д. Я скорее новый с xml, так что задаю этот действительно глупый вопрос, извините. :)Как преобразовать строку с тегами в xml?

Пример строки:

Lorem \ В Ipsum \ я Dolor \ В Sit \ ЦВЕТ = RGB (255,0,0) Амет \ ЦВЕТ = RGB (0,255,0) consectetur \ ЦВЕТ adipisicing \ ЦВЕТ Элит.

благодарит заранее!

+1

Возможно, вы могли бы добавить то, что должен выглядеть xml –

ответ

0

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

Вы можете использовать JDOM для создания XML после того, как вы проанализировали строку.

+0

ну да, я хочу сделать это сам. Я просто просил об этом лучший способ - быстрое исследование показало, что в java есть много вариантов для xml. Так –

0

Ваш формат немного похож на RTF.

Here - образец, который преобразует RTF в XML. Это может решить вашу часть XML проблемы.

Чтобы прочитать ваш формат, вы можете подумать о том, чтобы написать свой собственный EditorKit. (Пример кода использует RTFEditorKit)

1

Механизмы преобразования его в xml достаточно просты, либо вы пишете общий синтаксический анализатор, либо разбираете его в строке, а затем конвертируете (что легко, но означает, что вам нужно будет его проверить) с устройством для чтения документов, или вы создаете xml по мере продвижения (более сложное, но сокращающее проверку). Проблемы из вашего примера выше, определение того, что вы разрешите на вашем языке:

Lorem\B ipsum\I dolor\B sit \COLOR=RGB(255,0,0)amet\COLOR 

Это должно выйти в

Lorem<b> ipsum<i> dolor</b> sit<color>=rgb(255,0,0)amet</color> 

или

Lorem<b> impsum</b><i> dolor</i><b> sit</b><color>RGB(255,0,0)amet</color><color> 

Ни кажется particulrly что вы бы хотели, первое недействительно, второе означает, что вы можете просто сделать одно слово смелым (и никогда не жирным и курсивом).

Кажется, что вы возвращаетесь к sgml, где вам нужен дополнительный файл, чтобы узнать, что разрешено.

Но самый простой способ для вас, чтобы проверить это было бы просто сделать парсер и загрузить результаты в StringBuilder, а затем, когда вы закончите вы просто должны сделать что-то вроде

StringBuilder stringbuilder = new StringBuilder(); 
... 
// parse the input string into the stringbuilder 
... 
String xml = stringbuilder.toString(); 
DocumentBuilderFactory factory = 
     DocumentBuilderFactory.newInstance(); 

DocumentBuilder builder = factory.newDocumentBuilder(); 
Document document = builder.parse(new InputSource(new StringReader(xml))); 

даст вам ответ в dom, если вы этого хотели (или выбросили исключение, если вы использовали эту строку выше)

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