当前位置: 首页 > 知识库问答 >
问题:

XPath、Java和序列化xml

洪富
2023-03-14

假设类似xml

<foo>
  <bar>test</bar>
</foo>

计算表达式的返回类型=字符串,如

/foo/bar

将返回“test”。然而,我希望得到序列化的xml,所以类似于

<bar>test</bar>

应该退回。由于我无法在java的xpath实现(xerces)中检查返回类型,因此我无法简单地获得一个对象作为结果,如果它确实是一个节点,则将其转换为序列化的xml。

注意:我不知道表达式是否会实际返回节点、字符串、数字或其他任何内容,因此我无法为eval函数提供适当的返回类型,但字符串除外,正如我的问题所述,它返回的是文本内容,而不是序列化的xml。

所以我很好奇-

谢谢亚历克斯

共有3个答案

向弘懿
2023-03-14

正如Michael Kay回答的那样,这在JAXP(原生Java接口)中很困难。

在Kay先生的Saxon库的s9api API中(请参阅使用s9api评估XPath表达式),一旦调用了XPathSelector。evaluate()或XPathSelector。evaluateSingle()您可以通过调用XdmValue.toString()来获得XML序列化。

但是,如果XPath选择了一个属性(例如,/@name),您仍然会得到XML序列化,例如,name=“value”。您可以调用XdmItem。getStringValue(),但对于元素,该方法将返回与您已经看到的值相同的值-元素的文本内容,而不是序列化。我分别发布了关于如何区分属性和从Saxon s9api返回的元素的文章。

鲍驰
2023-03-14

现在,您可以正确地观察到,很难发现结果的返回类型;这是JAXP真正的设计缺陷。

如果有问题,可以考虑使用Saxon的s9api接口,该接口返回XdmValue对象,您可以查询其类型;您还可以额外获得XPath 2.0访问权限。

闻人德庸
2023-03-14

使用xpath返回类型XPathContain. NODE,然后您可以自己序列化返回的Node。

 类似资料:
  • 主要内容:1 Java序列化和反序列化,2 Java序列化的优点,3 java.io.Serializable接口,4 Java ObjectOutputStream,5 Java ObjectInputStream,6 Java序列化的例子,7 Java反序列化的例子1 Java序列化和反序列化 Java中的序列化是一种将对象状态写入字节流的机制。它主要用于Hibernate,RMI,JPA,EJB和JMS技术。 序列化的反向操作称为反序列化,其中字节流被转换为对象。序列化和反序列化过程与平台

  • 问题内容: 我已经开始在我的第一个android应用程序上进行工作,并且具有处理多层图像的应用程序。我能够将项目文件的平面版本导出为PNG,但我希望能够保存分层图像以供以后编辑(包括应用于某些层的任何选项,例如基于文本的层)。 无论如何,我已经确保需要写入文件的类是“可序列化的”,但是由于android.graphics.Bitmap不可序列化这一事实而遇到了一些障碍。以下代码实质上将位图作为PN

  • 本文向大家介绍java对象的序列化和反序列化,包括了java对象的序列化和反序列化的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了java对象的序列化和反序列化,供大家参考,具体内容如下 1. 什么是序列化        将对象转换为字节流保存起来,比如保存到文件里,并在以后还原这个对象,这种机制叫做对象序列化。(补充一句:把对象保存到永久存储设备上称为持久化) 2. 怎么实现序列化

  • 本文向大家介绍详解Java 对象序列化和反序列化,包括了详解Java 对象序列化和反序列化的使用技巧和注意事项,需要的朋友参考一下 之前的文章中我们介绍过有关字节流字符流的使用,当时我们对于将一个对象输出到流中的操作,使用DataOutputStream流将该对象中的每个属性值逐个输出到流中,读出时相反。在我们看来这种行为实在是繁琐,尤其是在这个对象中属性值很多的时候。基于此,Java中对象的序列

  • 本文向大家介绍Java 序列化和反序列化实例详解,包括了Java 序列化和反序列化实例详解的使用技巧和注意事项,需要的朋友参考一下 Java 序列化和反序列化实例详解 在分布式应用中,对象只有经过序列化才能在各个分布式组件之间传输,这就涉及到两个方面的技术-发送者将对象序列化,接受者将对象反序列化,下面就是一个很好的例子! 1.实体-Employee 2.SerializeHelper 3.测试类

  • 我有两个Java应用程序-和。需要通过套接字发送到类的Slave实例。 Master创建这个类的实例,序列化它并通过套接字发送到Slave。 在上,一切正常。没有异常。接收数据并尝试对其进行反序列化。引发以下异常 JAVAlang.ClassNotFoundException 在类中没有错误,因为如果我用优化函数=null创建它,那么就会毫无问题地反序列化它。我试图将实例序列化到中的文件中,然后也