Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/340.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
将文档类型反序列化为Java类_Java - Fatal编程技术网

将文档类型反序列化为Java类

将文档类型反序列化为Java类,java,Java,是否可以将“org.w3c.dom.Document”类型反序列化到Java类中? 我们有这个类(Employee),我们的应用程序中有一个现有的方法,它调用web服务并返回Employee类的“文档”类型。我们可以将文档序列化到Employee类吗 你能举个例子吗?我在internet上找到的大多数示例读取目录中的XML文件,然后将其反序列化到类中。但在我们的场景中,对象是文档类型 我试图实现的是如下所示(伪代码): 您不能直接向自己的类键入castDocumenttype对象。您可以做的是在

是否可以将“org.w3c.dom.Document”类型反序列化到Java类中? 我们有这个类(Employee),我们的应用程序中有一个现有的方法,它调用web服务并返回Employee类的“文档”类型。我们可以将文档序列化到Employee类吗

你能举个例子吗?我在internet上找到的大多数示例读取目录中的XML文件,然后将其反序列化到类中。但在我们的场景中,对象是文档类型

我试图实现的是如下所示(伪代码):


您不能直接向自己的类键入cast
Document
type对象。您可以做的是在类中有一个构造函数,该构造函数将
Document
作为参数,然后用Document对象中的值填充类属性

String employeeID = "12344444";
org.w3c.dom.Document xmlEmployee = helperClass.callWebServiceEmployee(employeeID);

EmployeeClass employee = new EmployeeClass(xmlEmployee);
其中,此构造函数可能具有如下实现:

public EmployeeClass(Document xmlEmployee) {
      // this is just an example assuming your xml had a Name Node  
      this.employeeName = xmlEmployee.getElementByTagName("Name")[0].getNodeValue();
}
同样,您可以填充
EmployeeClass的其他属性

编辑


如果您正在寻找其他方式来做事情,那么可以使用
JSON
api。在这种情况下,web服务可能返回JSON对象字符串,您可以从中获取对象。下面是一个示例,可以帮助您检查JSON的不同选项

人们之所以不急于帮助你,部分原因是你把术语弄错了。从DOM对象到特定于域的Java对象不是序列化。它是将一种物体形式转换成另一种物体形式。序列化是指从对象形式(如DOM)转换为串行形式;e、 g.XML

(这也不是反序列化:-)


无论如何

考虑到您目前的处境,我认为这种方法应该有效:

  • 将DOM对象序列化为XML

  • 使用XStream或JAXB或其他一些“XML绑定”技术将XML反序列化到POJO

  • 这不是最有效的方法(就运行时成本而言),但我怀疑有效的方法需要实现一种目前不存在的映射/绑定技术,而且(坦率地说)对其他人没有多大用处

    但是我不知道为什么首先要从DOM对象开始。这对我来说没什么意义:

    • 如果通过解析XML获得DOM对象,那么最好从XML开始,直接转到步骤2

    • 如果以其他方式构造DOM。。。。。为什么?


    文档类型的定义是什么?文档类型,来自package-org.w3c.dom.Document您的意思是从
    package
    序列化?否,将文档类型序列化为Employee类。我指的文档类型是org.w3c.dom.Document尽管您希望使用文档,但不支持反序列化等操作。序列化/反序列化是通过XML/JSON包(如JAXB、Jackson、xerces、DocumentBuilder、XStream…)完成的。谢谢,这正是我们目前正在做的,但是Employee类有很多成员字段,我们希望找到更好的解决方案,而不是逐个读取xml的每个节点。您是否有1.将DOM对象序列化为xml的参考链接?“序列化”是否意味着将对象写入物理文件?@yonan2236-不一定。我可以序列化到套接字。我可以序列化到一个永远不会写入任何地方的内存缓冲区。序列化仅仅意味着转换成串行形式;通常是字节或字符序列。在这种情况下,您可能希望通过tearrayoutputstream将其序列化为
    或类似的内容。非常感谢!我发现了这篇文章,但它使用了一个外部库:,有没有类似的标准java库可以使用?JAXB由Oracle提供,自Java6以来一直是JavaSE的一部分。
    
    public EmployeeClass(Document xmlEmployee) {
          // this is just an example assuming your xml had a Name Node  
          this.employeeName = xmlEmployee.getElementByTagName("Name")[0].getNodeValue();
    }