使用xpath而不是XSD对象生成来访问XML详细信息



有一个托管在服务器上的XML文件需要解析。通常,我从XML生成XSD,然后从该XSD生成javapojo。然后,我使用jackson将XML解析为java对象表示。仅仅使用xpath不是更简单吗?这意味着我不需要基于XML生成对象层次结构,而且如果XML发生更改,我也不需要重新生成对象层次。xpath看起来更简洁直观?

为什么我应该使用XSD、对象生成而不是xpath?

根据XML Schema规范,XSD用于定义XML文档的结构、内容和语义。这意味着您可以使用XSD来验证XML文件。

根据您的情况,如果您只需要从XML文件中获取一些值,则可以不生成整个对象树。在这种情况下,XPath是可行的。但是,您可能仍然需要一个XSD文件,以便在解析XML文件之前对其进行验证。这样,当XML文件的结构发生变化时,您的软件会很快失败,这将建议您更改XPath表达式。但要实现这一点,您不应该使用从XML文件生成的XSD,而是应该有一个单独的预生成XSD文件,该文件符合XPath表达式。

我认为这两种方法都是有效的,具体取决于具体情况。最后,您需要从远程xml文件中提取值,并对它们进行处理。

首先要考虑的标准是该文件的大小和数据元素的数量。如果只是几个,那么xpath提取应该很简单。但是,如果该xml文件表示一个相当大和/或复杂的数据结构,那么您可能希望对Java数据结构进行反序列化,然后可以使用它,JAXB将是一个很好的候选者。

如果远程服务器坚持或发布XML模式,JAXB将变得更容易/更好。如果没有,并且经常发生显著变化,那么无论哪种情况,您都会受到影响,尤其是JAXB。有一些方法可以通过使用XSLT对xml进行预处理来使其成为更可靠的形式,从而使事情顺利进行,但这很可能是部分解决方案。

最新更新