Включая обертку CDATA во время Marshalling - PullRequest
0 голосов
/ 09 июля 2011

Я генерирую XML с использованием XMLBeans.Есть ли способ включить CDATA Wrapper автоматически для необходимых элементов в выходной XML-документ.Например, мой выходной xml должен выглядеть так:

<employee>
<name><![CDATA[NAME]]></name>
<address><![CDATA[ADDRESS]]></address>
</employee>

1) Можем ли мы написать XSD таким образом, чтобы всякий раз, когда я устанавливал значение для элемента <name> в моей программе, используя XMLBeans, выходной xmlдолжен содержать элемент name, подобный следующему: <name><![CDATA[NAME]]></name> вместо <name>NAME</name>

2) Есть ли способ в XMLBeans для создания CDATA Wrapper для определенных элементов.

Любая справка приветствуется.

Ответы [ 2 ]

2 голосов
/ 03 января 2013

См. эту тему . Короче говоря:

node.setFoo("ABCDE12345"); 
XmlCursor c = node.xgetFoo().newCursor(); 
c.toFirstContentToken(); 
c.setBookmark(CDataBookmark.CDATA_BOOKMARK);

И затем, когда вы перейдете к «сохранению» документа, обязательно передайте XmlOptions, например:

XmlOptions opts = new XmlOptions().setUseCDataBookmarks(); 
node.xmlText(opts);
1 голос
/ 09 июля 2011

Просто читаю документы - я не пользователь XMLBeans.Если кто-то с опытом пишет по-другому - доверяйте ему, а не мне.

См. CDataBookmark и XmlOptions .setCDATAEntityCountThreshold, setUseCDataBookmarks, setSaveCDataLengthThreshold.

Документыо том, как вы устанавливаете CDataBookmark в тексте, не ясно.Смотрите этот бит от Набл .

...