我使用Jersey,Tomcat和Toplink在Java中开发RESTful Web服务。我的一个要求是用我的“客户”服务返回的XML数据中的实际xml数据(由该人员资源链接返回)替换资源链接(人)。为了实现这一点,在调用(GET方法)Customer服务时,我从“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>
当我使用查询字符串composite = person(要替换时)从Customer服务返回的输出 调用此服务时的人力资源网址和实际数据:
<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”属性中设置的人xml字符串中看到此<
和>
。我尝试了几件事(包括StringEscapeUtils.unescapeHtml)将<
和>
转换为<
和>
(正确的xml)。但没有什么对我有用。你能否就我如何解决这个问题给我一些想法?
答案 0 :(得分:0)
为了实现这一点,同时 调用(GET方法)客户 service我从中获取xml输出 “人”资源并删除 和标签 xml数据(自我的“客户”服务以来) 我想要的属性“人” 坚持这个xml数据)并设置它 xml数据在“person”属性中 “客户”资源。
我相信你说你有一个带有String属性的Customer对象来表示XML内容?当您整理此内容时,您将看到添加了转义字符。
我正在开发RESTful Web服务 在Java中使用Jersey,Tomcat和 排名靠前的链接。
当你说你正在使用TopLink时,你是oracle.toplink。*类,还是org.eclipse.persistence。*类。如果您正在使用后者(EclipseLink),您将能够利用EclipseLink JAXB(MOXy)来执行您想要的操作。
将XML表示为字符串
在泽西使用MOXy