服务器上有一个我想要解析的XML文件。通常,我从XML生成XSD,然后从该XSD生成java pojo。然后,我使用jackson将XML解析为java对象表示。只使用xpath不是更简单吗?这意味着我不需要基于XML生成对象层次结构,也不需要在XML发生变化时重新生成对象层次结构。xpath看起来更简洁、更直观?
为什么我应该使用XSD,对象生成而不是xpath?
发布于 2013-12-16 18:34:35
根据XML Schema规范,可扩展标示语言用于定义文档的结构、内容和语义。这意味着您可以使用XSD来验证XML文件。
根据您的环境,如果您所需要的只是从XML文件中获取一些值,那么您可能不需要生成整个对象树。在这种情况下,XPath是最好的选择。但是,您可能仍然需要一个XSD文件,以便在解析XML文件之前对其进行验证。这样,当XML文件的结构发生变化时,您可以使软件成为fail fast,这将建议您更改XPath表达式。但是要实现这一点,您不应该使用从XML文件生成的XSD,而应该有一个单独的预先生成的XSD文件,该文件符合XPath表达式。
发布于 2013-12-17 01:15:31
我认为这两种方法都是有效的,这取决于具体情况。最后,您希望从远程xml文件中提取值并对其执行某些操作。
首先要考虑的标准是该文件的大小和数据元素的数量。如果只有几个,那么xpath提取应该很简单。但是,如果xml文件表示相当大和/或复杂的数据结构,那么您可能需要对Java数据结构进行反序列化,然后可以利用该数据结构,而JAXB将是一个很好的选择。
如果远程服务器遵守或发布XML Schema,JAXB将变得更容易/更好。如果不这样做,并且经常发生重大变化,那么无论哪种情况,您都将受到影响,尤其是使用JAXB时。有一些方法可以通过使用XSLT对xml进行预处理来将其转换为更可靠的形式,但这很可能是部分解决方案。
https://stackoverflow.com/questions/20607356
复制相似问题