【问题标题】:Converting XML string into valid XML in the Jersey XML output在 Jersey XML 输出中将 XML 字符串转换为有效的 XML
【发布时间】:2011-08-18 00:07:16
【问题描述】:

我正在使用 Jersey、Tomcat 和 Toplink 在 Java 中开发 RESTful Web 服务。我的要求之一是用我的“客户”服务返回的 XML 数据中的实际 xml 数据(由该人资源链接返回)替换资源链接(人)。为了实现这一点,在调用(GET 方法)客户服务时,我从“Person”资源中获取 xml 输出,并从此 xml 数据中删除 <person></person> 标签(因为我的“客户”服务具有属性“person”,我想粘贴这个 xml 数据)并将这个 xml 数据设置在“Customer”资源的“person”属性中。

这是我的输出: 客户服务返回的输出:

<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>

如您所见,我在 Customer 资源的 person 属性中设置的 XML 字符串没有正确缩进。如果我查看“查看源代码”,它会显示如下输出:

<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>

我只在“person”属性中设置的 person xml 字符串中看到了这个 &amp;lt;&amp;gt;。我尝试了几件事(包括 StringEscapeUtils.unescapeHtml)将&amp;lt;&amp;gt; 转换为&lt;&gt;(正确的xml)。但没有什么对我有用。你能告诉我如何解决这个问题吗?

【问题讨论】:

    标签: java xml rest jaxb jersey


    【解决方案1】:

    为了实现这一点,同时 调用(GET 方法)客户 服务我从 “人”资源并删除 和标签 xml 数据(因为我的“客户”服务 有我想要的属性“人” 粘贴此 xml 数据)并设置此 “person”属性中的xml数据 “客户”资源。

    我相信您是说您有一个带有 String 属性的 Customer 对象来表示 XML 内容?当您编组此内容时,您会看到添加了转义字符。

    我正在开发 RESTful Web 服务 在 Java 中使用 Jersey、Tomcat 和 顶级链接。

    当您说您正在使用 TopLink 时,您是 oracle.toplink.* 类还是 org.eclipse.persistence.* 类。如果您使用的是后者 (EclipseLink),您将能够利用 EclipseLink JAXB (MOXy) 来做您想做的事情。

    将 XML 表示为字符串

    在泽西岛使用 MOXy

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-29
      • 1970-01-01
      • 1970-01-01
      • 2022-08-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多