Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在GWT服务器端解析XML文件_Xml_Gwt - Fatal编程技术网

在GWT服务器端解析XML文件

在GWT服务器端解析XML文件,xml,gwt,Xml,Gwt,如何在服务器端解析GWT中的XML文件?我不能使用XMLParser,因为它只能在客户端上工作。我需要在服务器端读取一个XML文件,将内容转换成一个列表,并使用GWT-RPC将其返回给客户端 提前谢谢 你的问题有点不清楚。“将内容转换为列表”是什么意思 如果您传递给客户机的只是一个可序列化/可序列化POJO的列表,那么如何获取这些POJO对客户机来说并不重要 您可以使用任何与Java兼容的第三方解析器或类似Apache Digester的东西来构建对象我使用Apache项目中的JAXB。 它与

如何在服务器端解析GWT中的XML文件?我不能使用XMLParser,因为它只能在客户端上工作。我需要在服务器端读取一个XML文件,将内容转换成一个列表,并使用GWT-RPC将其返回给客户端


提前谢谢

你的问题有点不清楚。“将内容转换为列表”是什么意思

如果您传递给客户机的只是一个可序列化/可序列化POJO的列表,那么如何获取这些POJO对客户机来说并不重要


您可以使用任何与Java兼容的第三方解析器或类似Apache Digester的东西来构建对象

我使用Apache项目中的JAXB。

它与GWT XML库略有不同。您可以使用xsd定义文件定义,运行程序创建一组数据传输类,然后一次性解析xml文件,而不是编写代码来爬过xml树并自行处理

有几点需要注意:

确保jaxbjar位于构建路径中的jre库之上。
最新版本和GAE存在问题,因此如果使用GAE,请坚持使用20090708版本。

这完全取决于服务器端运行的应用程序堆栈。它可能是一个JavaEE战争容器。它可能是一个PHP框架。它可能是运行Django的wsgi上运行的Python。注意,客户端GWT基本上是JavaScript。“这对服务器没有任何假设,好吧。”圣诞老人-谢谢,这很有帮助。我正在使用GAE并尝试使用XStream,但它与GAE有问题。我应该在我的文章中提到这一点。我现在正根据下面的建议尝试使用Apache Digester。感谢您的回复。是的,这是一个可序列化POJO的列表。我使用了Apache Digester,它工作了。但是读取一个只有600条记录的文件似乎有点慢,尽管我没有做过很多测试。另一方面,我正在使用GAE,并试图权衡将记录存储在XML和app engine数据存储中的选择。您知道从性能的角度来看,哪种方法对于获取记录更好吗?您正在读取的文件有多大?你确定读取文件比分配POJO慢吗?我对GAE不太熟悉。我非常喜欢XML,但这是谷歌内部很少使用的一种技术。我的印象是,app engine中提供的东西应该更适合大文件,但我不确定。谢谢,我将在稍后对此进行探讨。Re:Memcache如果您通过重新部署应用程序来更新xml,则会自动刷新Memcache。否则,您可以编写一个小GWT服务,允许您强制重新读取。最后,如果你想要一些非常复杂的东西,你可以在决定是从memcache还是从文件系统中提取时进行版本检查。我有两种情况。1.我当前的默认设置是v5,我重新部署了v5。2.当前默认值是v5,我上传v6并将v6作为默认值。在这两种情况下都会刷新memcache吗?顺便说一句,我最终使用JAXB进行解析,到目前为止,它工作得很好。感谢您的帮助。AFAICT当您部署新版本的程序(例如,从eclipse内部)时,memcache总是完全刷新。此外,如果您有一个新版本,它将永远不会与旧版本共享memcache版本。因此,如果您通过将XML放入jar文件并简单地重新部署来更新XML,则不会出现任何缓存问题。如果您将新的xml放在其他地方,则会出现问题,因为它有一个单独的更新过程。然后您必须手动刷新缓存。我有一个非常类似的设置,所以我很乐意提供帮助。我的XML包含在应用程序jar中。所以,根据你说的,我应该没事。我将尝试一下,并将在代码中添加一些日志条目,以测试确切的行为。我会回来的。谢谢分享你的经验。