Java domxml解析器示例
我有这个XML文件。我只是解析这个XML文件。这个例子展示了如何通过“名称”获取节点,并显示值。如何显示数据库中的所有记录Java domxml解析器示例,java,xml,Java,Xml,我有这个XML文件。我只是解析这个XML文件。这个例子展示了如何通过“名称”获取节点,并显示值。如何显示数据库中的所有记录 <data399173_eff_sor> <record> <ID>1</ID> <item_no>1.0</item_no> <description>Hack off tiles and make good walls</description>
<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>
1.
1
砍掉瓷砖,修好墙壁
100
50
20
5000
1.
1.03
试验
45
100
4500
0
等等
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());
}
File fXmlFile=新文件(“D:/formdata.xml”);
DocumentBuilderFactory dbFactory=DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder=dbFactory.newDocumentBuilder();
documentdoc=dBuilder.parse(fXmlFile);
doc.getDocumentElement().normalize();
System.out.println(“根元素:+doc.getDocumentElement().getNodeName());
NodeList nList=doc.getElementsByTagName(“记录”);
System.out.println(“-------------------------------”;
对于(int-temp=0;temp
这里只显示第一条记录。我想显示数据库中的所有记录。我认为您的XML无效——您只能在XML中有一个根元素 所以当你这样做的时候:
NodeList nList = doc.getElementsByTagName("record");
你只会得到一个元素。那是第一个。
为了解决这个问题,您需要将所有的
标记封装在某种根元素中,如下所示:
<root>
<record>
<id>1</id>
</record>
<record>
<id>2</id>
</record>
...
</root>
您可以在循环中尝试此代码
Node nNode = nList.item(temp);
NodeList list = nNode.getChildNodes();
list.item(0).getTextContent();
xml无效。(您可以联机验证您的xml:)
您可以尝试使用此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>
No.NodeList nList=doc.getElementsByTagName(“记录”)意味着它将只处理记录元素我编辑了我的XML文件。现在这是我从服务器下载的原始文件我尝试了这一点,但输出是相同的。我尝试了新的XML,它正在工作。你能尝试我发布的java代码并显示结果吗。是的,我尝试了你的代码。它给出以下输出。根元素:_data399173_eff_sor----------------------------当前要素:记录项目编号:1.0描述:砍掉瓷砖并修复墙壁价格:100基本数量:50变量数量:20基本价格:5000项目编号:1.01描述:在淋浴区分解地板(熨平板或timbe价格:4基本数量:1000 Var数量:0基本价格:4000您正在尝试使用另一个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