我有这个
XML文件.我只是解析这个
XML文件.这个例子展示了如何通过“name”获取节点,并显示值.如何显示数据库中的所有记录?
- <data399173_eff_sor>
- <record>
- <ID>1</ID>
- <item_no>1.0</item_no>
- <description>Hack off tiles and make good walls</description>
- <price>100</price>
- <base_qty>50</base_qty>
- <var_qty>20</var_qty>
- <base_price_>5000</base_price_>
- </record>
- <record>
- <ID>1</ID>
- <item_no>1.03</item_no>
- <description>Test</description>
- <price>45</price>
- <base_qty>100</base_qty>
- <var_qty>4500</var_qty>
- <base_price_>0</base_price_>
- </record>
- </data399173_eff_sor>
等等
Java代码
- File fXmlFile = new File("D:/formdata.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("record");
- 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("Item No : " + eElement.getElementsByTagName("item_no").item(0).getTextContent());
- System.out.println("Description : " + eElement.getElementsByTagName("description").item(0).getTextContent());
- System.out.println("price : " + eElement.getElementsByTagName("price").item(0).getTextContent());
- System.out.println("base qty : " + eElement.getElementsByTagName("base_qty").item(0).getTextContent());
- System.out.println("Var qty : " + eElement.getElementsByTagName("var_qty").item(0).getTextContent());
- System.out.println("Base price : " + eElement.getElementsByTagName("base_price_").item(0).getTextContent());
- }
解决方法
xml无效. (您可以在线验证您的xml:
http://www.w3schools.com/xml/xml_validator.asp)
您可以尝试使用此xml
- <records>
- <record>
- <ID>1</ID>
- <item_no>1.0</item_no>
- <description>Hack off tiles and make good walls</description>
- <price>100</price>
- <base_qty>50</base_qty>
- <var_qty>20</var_qty>
- <base_price_>5000</base_price_>
- </record>
- <record>
- <ID>1</ID>
- <item_no>1.03</item_no>
- <description>Test</description>
- <price>45</price>
- <base_qty>100</base_qty>
- <var_qty>4500</var_qty>
- <base_price_>0</base_price_>
- </record>
- </records>
并保留你的代码
- package test;
- import javax.xml.parsers.DocumentBuilder;
- import javax.xml.parsers.DocumentBuilderFactory;
- import javax.xml.parsers.ParserConfigurationException;
- import java.io.File;
- import java.io.IOException;
- import org.w3c.dom.Document;
- import org.w3c.dom.Element;
- import org.w3c.dom.Node;
- import org.w3c.dom.NodeList;
- import org.xml.sax.SAXException;
- public class TestXml{
- public static void main (String[] args) throws ParserConfigurationException{
- TestXml t = new TestXml();
- t.readXml() ;
- }
- public void readXml () throws ParserConfigurationException{
- File fXmlFile = new File("D:/formdata.xml");
- DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
- DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
- Document doc = null;
- try {
- doc = dBuilder.parse(fXmlFile);
- } catch (SAXException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- doc.getDocumentElement().normalize();
- System.out.println("Root element :" + doc.getDocumentElement().getNodeName());
- NodeList nList = doc.getElementsByTagName("record");
- 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("Item No : " + eElement.getElementsByTagName("item_no").item(0).getTextContent());
- System.out.println("Description : " + eElement.getElementsByTagName("description").item(0).getTextContent());
- System.out.println("price : " + eElement.getElementsByTagName("price").item(0).getTextContent());
- System.out.println("base qty : " + eElement.getElementsByTagName("base_qty").item(0).getTextContent());
- System.out.println("Var qty : " + eElement.getElementsByTagName("var_qty").item(0).getTextContent());
- System.out.println("Base price : " + eElement.getElementsByTagName("base_price_").item(0).getTextContent());
- }}}}
你会得到这个结果
- Root element :records
- ----------------------------
- Current Element :record
- Item No : 1.0
- Description : Hack off tiles and make good walls
- price : 100
- base qty : 50
- Var qty : 20
- Base price : 5000
- Current Element :record
- Item No : 1.03
- Description : Test
- price : 45
- base qty : 100
- Var qty : 4500
- Base price : 0