2011-08-01 68 views
0

我有一个JAVA类,其中我已经使用DOM解析器实现了XML解析。解析的XML文件是一个具有配置参数的配置文件。来自我网站的任何请求都将根据此xml文件返回的信息重定向。我有这个问题的两个问题多次处理XML文件

1)我想做文件解析只有一次,而不是每次。因为,DOM解析器在第一次将xml加载到内存后,我想知道如何检查文件是否已经在内存中可用?因此,如果XML文件改变了我如何确保新的chaged xml文件重新加载以下不叫每次

DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); 
DocumentBuilder db = dbf.newDocumentBuilder(); 
Document doc = db.parse(new File(sFpath)); 

2)。

谢谢,

回答

0

DOM是中间格式 - 解析它在某些特定应用(和友好)对象结构,而其余的是在一个单。对于每个Web请求,您都不想通过DOM搜索。然后,定期(每x分钟或y网络请求),检查文件是否已更新,重新解析它,并更新您的单身人士。

+0

我正在研究使用此方法为此目的使用单例。该类可以从servlet和JSP访问。我可以从servlet访问它,但是如何从JSP访问单例? –

0

你也可以在应用程序中的DOM就像任何其他数据一样 - 细节取决于你正在使用的应用程序服务器/框架。但是DOM是一个糟糕的选择,不仅因为它笨拙的API,而且因为DOM不是线程安全的,所以所有访问都需要同步。您最好使用一次解析后的只读模型。考虑为此使用Saxon和XPath/XQuery - 将树一次加载到只读的Saxon树中,然后可以使用从Java应用程序调用的XPath或XQuery重复访问该树。

按照cdegroot的建议,创建Java类来更明确地表示您的配置数据是另一种选择,但在我看来并不是必须的。每次向配置文件添加内容时,它可能会涉及更多的工作。