繁体   English   中英

如何从xml文件字段java读取

[英]How to read from an xml file field java

我有 xml 文件 cXml.xml:

  <?xml version="1.0" encoding="UTF-8" standalone="no"?>
  <clients>
   <entity class="movieRental.domain.Client">
    <field name="name" type="java.lang.String" value="mary"/>
    <field name="age" type="int" value="23"/>
    <field name="id" type="java.lang.Object" value="1"/>
   </entity>

   <entity class="movieRental.domain.Client">
    <field name="name" type="java.lang.String" value="anne"/>
    <field name="age" type="int" value="34"/>
    <field name="id" type="java.lang.Object" value="2"/>
   </entity>

   <entity class="movieRental.domain.Client">
    <field name="name" type="java.lang.String" value="john"/>
    <field name="age" type="int" value="22"/>
    <field name="id" type="java.lang.Object" value="3"/>
   </entity>

   <entity class="movieRental.domain.Client">
    <field name="name" type="java.lang.String" value="miriam"/>
    <field name="age" type="int" value="28"/>
    <field name="id" type="java.lang.Object" value="7"/>
   </entity>

   </clients>

我想从中读取并在控制台上打印。我的代码 Java 是:

 package movieRental.util;

 import java.io.File;
 import javax.xml.parsers.DocumentBuilderFactory;
 import javax.xml.parsers.DocumentBuilder;
 import org.w3c.dom.Document;
 import org.w3c.dom.NodeList;
 import org.w3c.dom.Node;
 import org.w3c.dom.Element;

   public class ClientX {

    public static void main(String argv[]) {

        try {

            File fXmlFile = new File("C:\\Users\\Adina\\Desktop\\proj1-vers2\\data\\cXml.xml");
            DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
            DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
            Document doc = dBuilder.parse(fXmlFile);

            doc.getDocumentElement().normalize();

            System.out.println("Root element :" + doc.getDocumentElement().getNodeName());

            NodeList nList = doc.getElementsByTagName("entity");

            System.out.println("----------------------------");

            for (int temp = 0; temp < nList.getLength(); temp++) {

                Node nNode = nList.item(temp);

                System.out.println("\nCurrent Element :" + nNode.getNodeName());

                if (nNode.getNodeType() == Node.ELEMENT_NODE) {

                    Element eElement = (Element) nNode;

                    System.out.println("Entity class : " + eElement.getAttribute("class"));
                    System.out.println("Name : " + eElement.getElementsByTagName("name").item(0).getTextContent());
                    System.out.println("Type : " + eElement.getElementsByTagName("type").item(0).getTextContent());
                    System.out.println("Value : " + eElement.getElementsByTagName("value").item(0).getTextContent());


                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

  }

当我运行这个类时,它给了我:

  Current Element :entity
  Entity class : movieRental.domain.Client
  java.lang.NullPointerException
  at movieRental.util.ClientX.main(ClientX.java:46)

如何打印 xml 文件中的所有值? 谢谢你。

试试这个:

System.out.println("Entity class : " + eElement.getAttribute("class"));
NodeList children = eElement.getChildNodes();
for (int i = 0; i < children.getLength(); i++) {
    if (children.item(i).getNodeName().equalsIgnoreCase("field")) {
       System.out.println("Name : " + children.item(i).getAttributes().getNamedItem("name"));
       System.out.println("Type : " + children.item(i).getAttributes().getNamedItem("type"));
       System.out.println("Value : " + children.item(i).getAttributes().getNamedItem("value"));
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM