【问题标题】:want to parse the xml into java object想将xml解析成java对象
【发布时间】:2019-06-29 02:37:13
【问题描述】:

在我的情况下,它不是完整的 xml,而不是我想解析要解析的一个 xml 标记的一部分。

<FILTERABLE>
    <FILTER_ELEMENT ALIAS_NAME="roomnumber" JOINER="AND" LPAREN="false" OPERATOR="BEGINS" RPAREN="false" SEQNUM="1" VALUE="1001"/>
</FILTERABLE>

请帮忙把代码转换成java对象。

ByteArrayInputStream bis = new ByteArrayInputStream(filterStrValue.getBytes("UTF-8"));
                    Document document = EntityCollectionXMLUtil.DomfromXML(new InputSource(bis), false);
                    Element rootElement = document.getDocumentElement();
                    rootElement.getElementsByTagName("FILTERABLE")

需要一个java对象作为一对哈希映射包含在下面

FILTER_ELEMENT ALIAS_NAME = "roomnumber"
JOINER="AND"
LPAREN="false" 
OPERATOR="BEGINS"
RPAREN="false"
SEQNUM="1"
VALUE="1001"

【问题讨论】:

  • 如果您已经为FilterElement的属性编写了一个类,您将可以使用those libraries之一。
  • 那为什么不使用hash map呢?

标签: java arrays xml


【解决方案1】:

dom4j 是一个开源的、基于 Java 的库,用于解析 XML 文档。在这个答案中使用 dom4j api 来解析 xml 文档。因此,将 dom4j.jar 文件添加到应用程序的类路径中。

FILTER_ELEMENT 类

public class Filter_Element {

    private String ALIAS_NAME;
    private String JOINER;
    private Boolean LPAREN;
    private String OPERATOR;
    private Boolean RPAREN;
    private int SEQNUM;
    private int VALUE;

    public String getALIAS_NAME() {
        return ALIAS_NAME;
    }
    public void setALIAS_NAME(String aLIAS_NAME) {
        ALIAS_NAME = aLIAS_NAME;
    }
    public String getJOINER() {
        return JOINER;
    }
    public void setJOINER(String jOINER) {
        JOINER = jOINER;
    }
    public Boolean getLPAREN() {
        return LPAREN;
    }
    public void setLPAREN(Boolean lPAREN) {
        LPAREN = lPAREN;
    }
    public String getOPERATOR() {
        return OPERATOR;
    }
    public void setOPERATOR(String oPERATOR) {
        OPERATOR = oPERATOR;
    }
    public Boolean getRPAREN() {
        return RPAREN;
    }
    public void setRPAREN(Boolean rPAREN) {
        RPAREN = rPAREN;
    }
    public int getSEQNUM() {
        return SEQNUM;
    }
    public void setSEQNUM(int sEQNUM) {
        SEQNUM = sEQNUM;
    }
    public int getVALUE() {
        return VALUE;
    }
    public void setVALUE(int vALUE) {
        VALUE = vALUE;
    }
}

xml 元素 (FILTER_ELEMENT) 的属性值设置为 filterElement 对象

try {

    File fXmlFile = new File("your_xml_file.xml");
    DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
    DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
    Document doc = dBuilder.parse(fXmlFile);
    NodeList nodeList= doc.getElementsByTagName("FILTER_ELEMENT");
    Filter_Element filterElement;

    for(int i = 0; i < nodeList.getLength(); i++) {
        Node node = nodeList.item(i);
        filterElement = new Filter_Element();

        filterElement.setALIAS_NAME(node.getAttributes().getNamedItem("ALIAS_NAME").getNodeValue());
        filterElement.setJOINER(node.getAttributes().getNamedItem("JOINER").getNodeValue());
        filterElement.setLPAREN(Boolean.valueOf(node.getAttributes().getNamedItem("LPAREN").getNodeValue()));
        filterElement.setOPERATOR(node.getAttributes().getNamedItem("OPERATOR").getNodeValue());
        filterElement.setRPAREN(Boolean.valueOf(node.getAttributes().getNamedItem("RPAREN").getNodeValue()));
        filterElement.setSEQNUM(Integer.valueOf(node.getAttributes().getNamedItem("SEQNUM").getNodeValue()));
        filterElement.setVALUE(Integer.valueOf(node.getAttributes().getNamedItem("VALUE").getNodeValue()));
    }

} catch (Exception e) {

    e.printStackTrace();

}

【讨论】:

    猜你喜欢
    • 2016-12-02
    • 1970-01-01
    • 2012-02-11
    • 1970-01-01
    • 1970-01-01
    • 2013-04-28
    • 1970-01-01
    • 2017-09-05
    相关资源
    最近更新 更多