1

How can I fill an array with such object?

class Sam{
String id;
String type;
String data;
}

from xml structure:

<Table name="Sam">
      <Row id="374058">
         <Col name="ID.1">374058</Col>
         <Col name="TYPE.1">mob</Col>
      </Row>
      <Row id="374059">
         <Col name="ID.1">374059</Col>
         <Col name="TYPE.1">ff</Col>
      </Row>
   </Table>

Found such "Table" but what i shoud do next to collect data from "Row"?

List<Sam> samList = new new ArrayList<>();
NodeList nameNodeList = xml.getDocumentElement().getElementsByTagName("Table");
        if (nameNodeList != null) {
            for (int i = 0; i < nameNodeList.getLength(); i++) {
                Node node = nameNodeList.item(i);
                if (node.getAttributes().getNamedItem("name").getNodeValue().equals("Sam") &&
                        node.getNodeType() == Node.ELEMENT_NODE) {
                    Element element = (Element) node;

                   //what should i do next, how can i fined ID,TYPE,DATA?
                }
            }
        }

2 Answers 2

1

Try this one. I try to code the problem and get the following output. This code parses your XML and constructs the Sam object.

Code:

import java.util.ArrayList;
import java.util.List;

import org.w3c.dom.NodeList;
import org.w3c.dom.*;
import javax.xml.parsers.*;
import java.io.*;

public class XmlParse {

    public static void main(String[] args) {
        XmlParse xmlParse = new XmlParse();
        xmlParse.xmlToObj();

    }

    public void xmlToObj() {

        try {
            
            File inputFile = new File("sam.xml");
            DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
            DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
            Document doc = dBuilder.parse(inputFile);
            doc.getDocumentElement().normalize();
            System.out.println("Root element: " + doc.getDocumentElement().getNodeName());
            NodeList nodeList = doc.getElementsByTagName("Row");
            
            Node node = null;
            List<Sam> samList = new ArrayList<>();
            if(nodeList != null && nodeList.getLength() > 0) {
                for(int i=0; i < nodeList.getLength(); i++) {
                    node = nodeList.item(i);
                    NodeList innerNodeList =  doc.getElementsByTagName("Col");
                    
                    Node innerNodeID = innerNodeList.item(0);
                    Node innerNodeType = innerNodeList.item(1);
                    
                    String id =  innerNodeID.getTextContent();
                    String type = innerNodeType.getTextContent();
                    Sam sam = new Sam(id, type, null);
                    System.out.println(sam.toString());
                    
                    samList.add(sam);
                }
                
            }
            
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }

}

class Sam {
    String id;
    String type;
    String data;
    public Sam(String id, String type, String data) {
        this.id = id;
        this.type = type;
        this.data = data;
    }
    @Override
    public String toString() {
        return "Sam [id=" + id + ", type=" + type + ", data=" + data + "]";
    }
    
}

Output:

Root element: Table
Sam [id=374058, type=mob, data=null]
Sam [id=374058, type=mob, data=null]

input : sam.xml

<Table name="Sam">
    <Row id="374058">
       <Col name="ID">374058</Col>
       <Col name="TYPE">mob</Col>
    </Row>
    <Row id="374059">
       <Col name="ID">374059</Col>
       <Col name="TYPE">ff</Col>
    </Row>
</Table>
Sign up to request clarification or add additional context in comments.

Comments

0

you can use JAXB Unmarshalling

You can also see some examples in Examples JAXB Unmarshalling

1 Comment

I think i can't use it in such names ID.1?

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.