Определить, есть ли у текстового контента CDATA - PullRequest
3 голосов
/ 25 января 2012

У меня есть два API для получения описания приложений и один общий интерфейс.Мне нужно проверить, идет ли описание с тегом CDATA или нет в Java.

Например, одно приложение имеет следующее описание:

"<![CDATA[<p>What is Skype?<br />Skype is software that enables the world's     
conversations. Millions of individuals and businesses use Skype to make free video and voice    
calls, send instant messages and share files with other Skype users. Everyday, people also    
use Skype to make low-cost calls to landlines and mobiles.</p>]]>"

А другое приложение имеет следующее описание

Run with your fingers as fast as you can to try and get to the top of the leader board. This    
 game gets even better with friends, Once people see you playing they will want to have a go    
 and try to beat your fastest time. Tip: Take long strides on the screen to get maximum     
distance per step,     
<a href=https://abc.defgh.ij.kl/apps/wap/shopping/shopping/freshima-supermarket/freshima-supermarket/web/>WAP URL</a>

Как можно различить два описания?Есть ли способ определить, идет ли описание с CDATA или нет в Java?

Ответы [ 2 ]

2 голосов
/ 25 января 2012

Как вы анализируете свой XML?

Если вы используете StAX , вы можете получить текущее событие, которое встречается в вашем потоке, которое может быть XMLStreamConstants.CHARACTERS или XMLStreamConstants.CDATA.

Если вы получаете Node Объект (как, например, через XPathAPI ), Объект предложит вам getNodeType() Метод. Также Node имеет константы для Node.TEXT_NODE и Node.CDATA_SECTION_NODE.

Дополнительная информация будет полезна для ответа на ваш вопрос.

С уважением, Max

0 голосов
/ 25 января 2012

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

<a><![CDATA[<xyz/>]]></a>

<a>&lt;xyz/&gt;</a>

Так что, возможно, ваш тест просто "делает"текстовое содержимое содержит символ <? ".

...