【问题标题】:How to create POJO class for xml parse in java?如何在java中为xml解析创建POJO类?
【发布时间】:2012-06-15 10:00:15
【问题描述】:

我得到了我需要的确切输出,但我必须为我的程序使用 POJO 类,我搜索了很多问题,但我没有明确的想法。帮助我解决这个问题,提前感谢我的 xml 编码下面给出了java中的短语。

ReadAndPrintXMLFile 的编码::

import org.w3c.dom.*;

import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.DocumentBuilder;
import org.xml.sax.SAXException;
import org.xml.sax.SAXParseException;

import java.net.URL;
import java.io.InputStream;

public class ReadAndPrintXMLFile{
    public static void main (String argv []){


    try {
            DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance();
            DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder();

            URL url = new URL("http://xxxxxxxxxxxxxxxx");
            InputStream stream = url.openStream();
            Document doc = docBuilder.parse(stream);

            // normalize text representation
            doc.getDocumentElement ().normalize ();
            System.out.println ("Root element of the doc is " +
                 doc.getDocumentElement().getNodeName());
            NodeList listOfPersons = doc.getElementsByTagName("head");
            int totalPersons = listOfPersons.getLength();
            System.out.println("Total no of head : " + totalPersons);
            for(int s=0; s<listOfPersons.getLength() ; s++){
                Node firstPersonNode = listOfPersons.item(s);
                if(firstPersonNode.getNodeType() == Node.ELEMENT_NODE){
                    Element firstPersonElement = (Element)firstPersonNode;
                    //-------
                    NodeList firstNameList = firstPersonElement.getElementsByTagName("heading");
                    Element firstNameElement = (Element)firstNameList.item(0);
                    NodeList textFNList = firstNameElement.getChildNodes();
                    System.out.println("Heading : " +
                           ((Node)textFNList.item(0)).getNodeValue().trim());

                }//end of if clause
            }//end of for loop with s var
        }catch (SAXParseException err) {
        System.out.println ("** Parsing error" + ", line "
             + err.getLineNumber () + ", uri " + err.getSystemId ());
        System.out.println(" " + err.getMessage ());
        }catch (SAXException e) {
        Exception x = e.getException ();
        ((x == null) ? e : x).printStackTrace ();
        }catch (Throwable t) {
        t.printStackTrace ();
        }
        //System.exit (0);
    }//end of main
}

对于这个 xml 解析程序,我必须 POJO 类,所以为此我创建了一个这样的类

public class POJOurl {

    private String heading;

    public String getHeading() {
        return heading;
    }

    public void setHeading(String heading) {
        this.heading = heading;
    }


}

这里我不知道如何在我的程序中使用这些 get 和 set 方法,使用这些 public String getHeading() 和 public void setHeading(String heading) 我必须执行程序.. 我必须得到输出什么我现在..唯一的事情是我必须为这个程序使用 POJO 类

输出::

Root element of the doc is root1
Total no of head : 4
Heading : Appliance Repairs
Heading : Air conditioning and refrigeration services
Heading : Accountants
Heading : Accident Management

【问题讨论】:

  • 您的具体问题/问题是什么?
  • 我必须创建 POJO 类((即)使用 get 和 set 方法我必须生成输出)并且我必须从该类中获取输出,
  • 您正在阅读的这个 XML - 它是针对 XSD 编写的吗?
  • @user1443848 我可能会走得更远,但是您需要将 XML 文件读入 POJO 类的东西吗?如果是这样,您应该看看 Jaxb 之类的。无论如何,我认为 kjp 说 XSD 会有所帮助是正确的。
  • 试试 JAXB jaxb.java.net/guide

标签: java xml-parsing pojo


【解决方案1】:

我会创建一个类 Person 具有您需要的属性,例如名字。

【讨论】:

  • hmmm.. 我创建了私有字符串标题; public String getHeading() { 返回标题; } public void setHeading(String heading) { this.heading = heading;但是我不知道如何调用这些 set 和 get 方法以及我必须在哪里调用 .. 由于我是 POJO 的新手,所以我在这里感到困惑..
  • 你能告诉我们你的输出应该是什么样子吗?
  • 我得到的输出正是我想要的......但我没有使用 POJO 类,我想要现在得到的相同输出,但我必须使用 POJO 类通过我需要得到输出。
  • 我认为您需要了解 POJO 的含义:en.wikipedia.org/wiki/Plain_Old_Java_Object。如果你对这个概念有一个清晰的理解,我相信你会发现你的作业相对简单。
猜你喜欢
  • 2019-06-05
  • 2019-09-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多