如何解析使用Web Services返回的XML到xQuery?

时间:2011-04-22 19:27:04

标签: java xml xquery

我几天来一直在努力解决这个问题,并真诚地感谢你的帮助。我有一个Java应用程序,它查询多个返回XML消息的Web服务。然后我的应用程序解析使用xquery返回的这些多个XML消息。根据我的理解,xquery需要一个XML文档来读取XML,而对于我的Java应用程序,为每个Web服务创建一个XML文档,返回的XML将会很大并且会减慢响应时间。

有没有办法,Webservices调用返回的XML字符串可以作为xquery的输入直接传递而不创建XML文档?来自单一来源的XML是一致的,但XML结构在多个Webservices调用中是不同的,因此我需要一个非常灵活的应用程序处理框架。

提前谢谢你。 尼尔。

2 个答案:

答案 0 :(得分:0)

String是字符串,而XQuery / XPath需要带有名称空间,元素和属性的已解析对象。这就是为什么需要解析的原因。

你可以传递一个InputSource而不是DOM,但我被告知它无论如何都会构建一个DOM。

答案 1 :(得分:0)

  

有没有办法,那就是XML字符串   通过Webservices调用返回即可   直接作为输入传递给   xquery没有创建XML   文件?

不,XQuery在XML文档上运行。您可以将字符串传递给XQuery应用程序,它被视为字符串,而不是XML文档。

例如

"<t name='Ann'/>"

可以使用任何接受字符串参数的函数进行处理,例如:string-length()substring()matches()tokenize()replace(), ......等等。

但是,尝试将此字符串视为XML文档 - 例如尝试评估XPath表达式,如:

/t/@name 

在此字符串上是不可能的,除非它被解析。