2011-05-03 68 views
1

我开发利用泽西下,Tomcat和TopLink在Java中RESTful Web服务。我的一个要求替换的XML数据,我的“客户”的服务回报与实际的XML数据的资源链接(人)(该人资源链接返回)。为了实现这一目标,同时呼吁(GET方法)的客户服务我从“人”的资源输出的XML和删除XML数据的<person></person>标签(因为我的“客户”服务具有属性“人”我想在这里粘贴这个XML数据),并在“客户”资源的“人物”属性中设置此XML数据。转换XML字符串转换为有效的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>[email protected]</emailAddress> </person> 
    <xxx>...... </xxx> 
    <xxx>...... </xxx> 
    ...... 
    ...... 
    ...... 
</customer> 

正如你看到的,我在客户资源的人属性设置的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;[email protected]&lt;/emailAddress&gt; 
    <xxx>...... </xxx> 
    <xxx>...... </xxx> 
    ....... 
    ....... 
    ....... 
</customer> 

我只在我的“人”属性设置的人XML字符串看到这个&lt;&gt;。我试过几件事情(包括StringEscapeUtils.unescapeHtml)到&lt;&gt;转换成<>(正确的XML)。但没有为我工作。你能否给我一些关于如何解决这个问题的想法?

回答

0

为了实现这一目标,而 调用(GET方法)客户 服务我从 “人”资源输出的XML和删除这个 XML数据的 和标签(因为我的“客户”的服务 有属性的‘人’,我想 坚持这个XML数据),并在设置这个 XML数据的‘客户‘资源人’的 属性’。

我相信你是说你有一个带String属性的Customer对象来表示XML内容?当你编组这些内容时,你会看到另外的转义字符。

我用的球衣,Tomcat和 的Toplink开发RESTful Web服务 在Java中。

当你说你正在使用TopLink时,你是oracle.toplink。*类还是org.eclipse.persistence。*类。如果您使用的是后者(EclipseLink的),你将能够利用的EclipseLink JAXB(莫西)做你想要什么。

代表XML作为一个字符串

使用莫西与新泽西