我想解析XML文件并分别使用节点的值。 我已经制作了解析器和pojo类。
我想用节点中的对象创建ArrayList。例如,我想使用Object [1]用户名值(root)。
这是我的XML:
<Class>
<Nodes>
<node id="1">
<username>root</username>
<password>blabla</password>
<hostname>222.222.222.222</hostname>
<port>50</port>
<node_dir>/usr/etc</node_dir>
<pc_dir>C:\Users\bla\Desktop\bla</pc_dir>
</node>
<node id="2">
<username>blabla</username>
<password>ooo</password>
<hostname>111.117.111.111</hostname>
<port>30</port>
<node_dir>/usr/etc</node_dir>
<pc_dir>C:\Users\bla\Desktop\bla</pc_dir>
</node>
</Nodes>
</Class>
这是我的解析Java代码:
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.DocumentBuilder;
import org.w3c.dom.Document;
import org.w3c.dom.NodeList;
import com.abc.sftpNew.NodeModel.nodeModel;
import org.w3c.dom.Node;
import org.w3c.dom.Element;
import java.io.File;
import java.util.ArrayList;
public class deserialize extends nodeModel {
public static ArrayList<nodeModel> readXml() {
ArrayList<nodeModel> objekt = new ArrayList<nodeModel>();
try {
nodeModel nov = new nodeModel();
File fXmlFile = new File("input.xml");
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(fXmlFile);
doc.getDocumentElement().normalize();
NodeList listOfPersons = doc.getElementsByTagName("node");
int totalNodes = listOfPersons.getLength();
System.out.println("Total number of nodes : " + totalNodes);
System.out.println("---------------------------------------");
System.out.println("Root element :" +
doc.getDocumentElement().getNodeName());
NodeList nList = doc.getElementsByTagName("node");
System.out.println("----------------------------");
for (int temp = 0; temp < nList.getLength(); temp++) {
Node nNode = nList.item(temp);
System.out.println("Current Element :" + nNode.getNodeName());
if (nNode.getNodeType() == Node.ELEMENT_NODE) {
Element eElement = (Element) nNode;
System.out.println("Node id: " + eElement.getAttribute("id"));
nov.setNode(eElement.getAttribute("id"));
System.out.println("Username: " +
eElement.getElementsByTagName("username").item(0).getTextContent());
nov.setUsername(eElement.getElementsByTagName("username").item(0)
.getTextContent());
System.out.println("Password: " +
eElement.getElementsByTagName("password").item(0)
.getTextContent());
nov.setPassword(eElement.getElementsByTagName("password").item(0)
.getTextContent());
System.out.println("Hostname: " +
eElement.getElementsByTagName("hostname").item(0)
.getTextContent());
nov.setHostname(eElement.getElementsByTagName("hostname").item(0)
.getTextContent());
System.out.println("Port: " + eElement.getElementsByTagName("port").item(0).getTextContent());
nov.setPort(Integer.parseInt(eElement.getElementsByTagName("port").item(0).getTextContent()));
System.out.println("Directory on the server: "
+ eElement.getElementsByTagName("nodeDirectory").item(0).getTextContent());
nov.setNodeDirectory(eElement.getElementsByTagName("nodeDirectory").item(0).getTextContent());
System.out.println("Directory on the computer: "
+ eElement.getElementsByTagName("pcDirectory").item(0).getTextContent());
nov.setPcDirectory(eElement.getElementsByTagName("pcDirectory").item(0).getTextContent());
System.out.println(
"Time interval: " + eElement.getElementsByTagName("timeInterval").item(0).getTextContent());
nov.setTimeInterval(
Integer.parseInt(eElement.getElementsByTagName("timeInterval").item(0).getTextContent()));
System.out.println("--------------------------------------------------------------------");
}
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}
这是我的pojo课程:
public class NodeModel {
private String username;
private String localhost;
private int port;
private String hostname;
private String node_dir;
private String pc_dir;
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
private String password;
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getLocalhost() {
return localhost;
}
public void setLocalhost(String localhost) {
this.localhost = localhost;
}
public int getPort() {
return port;
}
public void setPort(int port) {
this.port = port;
}
public String getHostname() {
return hostname;
}
public void setHostname(String hostname) {
this.hostname = hostname;
}
public String getNode_dir() {
return node_dir;
}
public void setNode_dir(String node_dir) {
this.node_dir = node_dir;
}
public String getPc_dir() {
return pc_dir;
}
public void setPc_dir(String pc_dir) {
this.pc_dir = pc_dir;
}
}