Преобразование строки XML в действительный XML в выводе XML на Джерси - PullRequest
1 голос
/ 03 мая 2011

Я занимаюсь разработкой веб-сервисов RESTful на Java с использованием Jersey, Tomcat и Toplink.Одно из моих требований - заменить ссылку на ресурс (person) на фактические данные XML (возвращаемые ссылкой на ресурс этого человека) в данных XML, которые возвращает моя служба «Клиент».Чтобы достичь этого, при вызове (метод GET) службы Customer я получаю вывод xml из ресурса Person и удаляю теги <person> и </person> из этих данных xml (поскольку моя служба Customer имеетсвойство «персона», куда я хочу вставить эти данные XML) и установить эти данные XML в свойстве «персона» ресурса «Клиент».

Вот мой вывод: выходные данные, возвращенные из службы поддержки клиентов:

<customer>
  <person>http://localhost:8080/xxxx/resources/person/JONESTD</person>
  <xxx>...... </xxx>
  <xxx>...... </xxx>
  ......
  ......
  ......
</customer>

Вывод, возвращаемый службой поддержки клиентов, когда я использую строку запроса составной = человек (для замены URL ресурса человека фактическими данными) при вызове этой службы:

<customer>
  <person><namePrefix>Mr.</namePrefix> <nameFirst>Timothy</nameFirst>   
  <nameLast>Jones</nameLast> <nameMiddle>D.</nameMiddle> <nameSuffix/> 
  <nameDisplayInformal>Timothy D. Jones</nameDisplayInformal> <nameDisplayFormal>Mr. 
  Timothy D. Jones</nameDisplayFormal> <nameSortedInformal>Jones, Timothy   
  D.</nameSortedInformal> <nameSortedFormal>Timothy, Jones D. Mr.</nameSortedFormal> 
  <username>JONESTD</username> <emailAddress>JONESTD@xxxx.xx</emailAddress> </person>
  <xxx>...... </xxx>
  <xxx>...... </xxx>
  ......
  ......
  ......
</customer>

Как видите, XMLСтрока, которую я установил в свойстве person ресурса Customer, не имеет правильного отступа.Если я просматриваю «Просмотреть исходный код», он показывает следующий вывод:

<customer>
    &lt;namePrefix&gt;Mr.&lt;/namePrefix&gt;    
    &lt;nameFirst&gt;Timothy&lt;/nameFirst&gt;    
    &lt;nameLast&gt;Jones&lt;/nameLast&gt;  &lt;nameMiddle&gt;D.&lt;/nameMiddle&gt;  
    &lt;nameSuffix/&gt;  &lt;nameDisplayInformal&gt;Timothy D. 
    Jones&lt;/nameDisplayInformal&gt;  &lt;nameDisplayFormal&gt;Mr. Timothy D. 
    Jones&lt;/nameDisplayFormal&gt;  &lt;nameSortedInformal&gt;Timothy, Jones 
    D.&lt;/nameSortedInformal&gt;  &lt;nameSortedFormal&gt;Timothy, Jones D. 
    Mr.&lt;/nameSortedFormal&gt;  &lt;username&gt;JONESTD&lt;/username&gt;  
    &lt;emailAddress&gt;JONESTD@xxxx.xx&lt;/emailAddress&gt;
   <xxx>...... </xxx>
   <xxx>...... </xxx>
   .......
   .......
   .......
</customer>

Я вижу эти &lt; и &gt; только в строке person xml, которую я установил в свойстве person.Я попробовал несколько вещей (включая StringEscapeUtils.unescapeHtml) для преобразования &lt; и &gt; в < и > (правильный xml).Но у меня ничего не получалось.Не могли бы вы дать мне некоторое представление о том, как я могу решить эту проблему?

1 Ответ

0 голосов
/ 04 мая 2011

Чтобы достичь этого, пока вызов (метод GET) клиента сервис я получаю вывод XML от «Персона» и удалите и теги из этого XML-данные (так как мой сервис "Клиент" имеет свойство "человек", где я хочу вставить эти данные XML) и установить этот XML-данные в свойстве person ресурс "Клиент".

Я полагаю, вы говорите, что у вас есть объект Customer со свойством String для представления содержимого XML? Когда вы упорядочите этот контент, вы увидите добавление экранированных символов.

Я занимаюсь разработкой веб-сервисов RESTful. в Java, используя Джерси, Tomcat и Toplink.

Когда вы говорите, что используете TopLink, вы классы oracle.toplink. * Или классы org.eclipse.persistence. *. Если вы используете последний (EclipseLink), вы сможете использовать EclipseLink JAXB (MOXy), чтобы делать то, что вы хотите.

Представление XML в виде строки

Использование МОКСИ с Джерси

...