java – DOM XML Parser示例
发布时间:2020-05-25 11:07:23 所属栏目:Java 来源:互联网
导读:我有这个 XML文件.我只是解析这个 XML文件.这个例子展示了如何通过“name”获取节点,并显示值.如何显示数据库中的所有记录? data399173_eff_sorrecord ID1/ID item_no1.0/item_no descriptionHack off tiles and make good walls/descript
|
我有这个 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 (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
