XML解析和反序列化(XML Parsing and deserialization)

2019-07-04 15:13发布

我有我可是从我的类阅读它一个xml文件

<Testclasses>
<Class>new SomeClass1()</class>
<class>new SomeClass2()</class>
</Testclasses>

所以我有在类的方法,其需要一个参数作为如下的对象

public List<Object> retriveValuesFromXml(){
    ....
    This method parses the values from xml and reads the different object and returns a
    list of objects.
}

@Test
public void someMethod1(){

   ArrayList<Object> list_of_objects= retriveValuesFromXml();

   for(Object x :list_of_objects){
      someMethod2(x); //for example : x = new SomeClass1() or x = new SomeClass2()
   }
}

public void someMethod2(Object target){
   .....
}

其中目标是创建的新SomeClass的()对象,这是我们从XML读取。 我能知道如何从文件作为对象解析XML值,并将其存储在列表中? 我只是想用所有的类对象的名单在我的项目,并将它们发送到这个测试类。 后来即使任何新类被添加到该项目,我应该能够添加到这个XML文件,并通过类对象来测试。

Answer 1:

您可能需要使用简单的Java库如XStream的 ,这是非常简单易用。 所有你需要定义一个POJO类来保存从XML解析值,然后使用该库来解析XML,并产生转换的java对象为您服务。

     XStream xstream = new XStream();

     //converting object to XML
     String xml = xstream.toXML(myObject);

     //converting xml to object
     MyClass myObject = (MyClass)xstream.fromXML(xml);

请看看它的2分钟教程



Answer 2:

它类似的东西我想象

DocumentBuilder db = dbf.newDocumentBuilder();
org.w3c.dom.Document doc = db.parse("name_of_file.xml");

Element rootElement = doc.getDocumentElement();
NodeList nl=rootElement.getElementsByTagName("TestClass");          


文章来源: XML Parsing and deserialization