【发布时间】: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>
<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>Timothy, Jones
D.</nameSortedInformal> <nameSortedFormal>Timothy, Jones D.
Mr.</nameSortedFormal> <username>JONESTD</username>
<emailAddress>JONESTD@xxxx.xx</emailAddress>
<xxx>...... </xxx>
<xxx>...... </xxx>
.......
.......
.......
</customer>
我只在“person”属性中设置的 person xml 字符串中看到了这个 &lt; 和 &gt;。我尝试了几件事(包括 StringEscapeUtils.unescapeHtml)将&lt; 和&gt; 转换为< 和>(正确的xml)。但没有什么对我有用。你能告诉我如何解决这个问题吗?
【问题讨论】: