Включая обертку CDATA во время Marshalling
Я генерирую 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 ответа
Смотрите эту ветку. Короче:
node.setFoo("ABCDE12345");
XmlCursor c = node.xgetFoo().newCursor();
c.toFirstContentToken();
c.setBookmark(CDataBookmark.CDATA_BOOKMARK);
И затем, когда вы перейдете к "сохранению" документа, обязательно передайте XmlOptions, например:
XmlOptions opts = new XmlOptions().setUseCDataBookmarks();
node.xmlText(opts);
Просто читаю документы - я не пользователь XMLBeans. Если кто-то с опытом пишет по-другому - доверяй им, а не мне.
См. CDataBookmark и XmlOptions.setCDATAEntityCountThreshold, setUseCDataBookmarks, setSaveCDataLengthThreshold.
Документы о том, как установить CDataBookmark в тексте, не ясны. Посмотрите это немного из Набл.