我有这个
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