Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > marshalling XML с HTML тэгами


Автор: defunct 17.11.2008, 20:05
Вопрос следующий: есть класс MyClass:
Код

class MyClass{
private String someField_;
public MyClass(String someField){
someField_ = someField;
}
public String getSomeField(){
return someField_;
}
}


Далее, создаем экземпляр класса:
Код

MyClass my = new MyClass("<p>Hello, world!</p>");


При сериализации с помощью Marshaller.marshal(my) получается следующий результат:

Код

<?xml version="1.0" encoding="UTF-8"?>
<my-class>
    <some-field>&lt;p&gt;Hello, World!&lt;/p&gt;</some-field>
</my-class>


Как получить следующее (то есть чтобы символы '<' и '>' не заменялись?):

Код

<?xml version="1.0" encoding="UTF-8"?>
<my-class>
    <some-field><p>Hello, World!</p></some-field>
</my-class>

Автор: v2v 17.11.2008, 22:39
а как тогда xml парсер будет знать что <p> это часть строкового поля, а не ещё один хмл тег?

Автор: SoulKeeper 17.11.2008, 23:57
http://www.w3schools.com/XML/xml_cdata.asp

Автор: defunct 18.11.2008, 08:27
v2v, мне пока не надо это unmarshall-ить. Проблема в том, что потом этот xml будет преобразовываться в html с помощью xslt, поэтому мне нужно, чтобы html-тэги оставались тэгами. В случае, если они заменяются, браузер потом воспринимает их как текст и у меня получится <p>Hello, World!<p> на странице, а не Hello, World!.

SoulKeeper, я использую castor для marshall, и если написать

Код

MyClass my = new MyClass("#PCDATA[<p>Hello, World!</p>]");


то все равно получается: 

Код

#PCDATA[<p>Hello, World!</p>]
<?xml version="1.0" encoding="UTF-8"?>
<my-class>
    <some-field>#PCDATA[&lt;p&gt;Hello, World!&lt;/p&gt;]</some-field>
</my-class>


Если написать 

Код

MyClass my = new MyClass("<![CDATA[<p>Hello, World!</p>]]>");


то получим

Код

<![CDATA[Hello, World!]]>
<?xml version="1.0" encoding="UTF-8"?>
<my-class>
    <some-field>&lt;![CDATA[&lt;p&gt;Hello, World!&lt;/p&gt;]]&gt;</some-field>
</my-class>


Я пробывала сделать, как написано тут: http://webdata.dk/guides/castor-cdata.html
но не получается.

Автор: SoulKeeper 18.11.2008, 09:56
А в чем проблема с &gt; и &lt; ?

Это же стандартная замена для XML файлов.

Автор: defunct 20.11.2008, 08:32
SoulKeeper, мне не нужно, чтобы они заменялись - они считаются текстом, а не тэгами. А мне нужно, чтобы они оставались тэгами.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)