将 XML 数据读入文本文件 [英] Reading XML data into text file

查看:38
本文介绍了将 XML 数据读入文本文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我对编码很陌生,任何人都可以帮助我更正我的代码.我需要读取 XML 数据并将数据存储在文本文件中.每个值必须用逗号分隔,一旦读取了一条记录的数据,就需要转到下一行并执行另一条记录.

I am very new for coding, can any one please help me in correcting my code. I need to read XML Data and store the data in text file. Each value must be separated by comma and once the data for one record is read it need to go for next line and execute another record.

示例 XML 文件:

<?xml version="1.0" encoding="UTF-8"?>
 <xml_tool xmlns:md="http://www.example.com/XT/1.0/">  
    <md:header>       
          <md:application_version>1.0</md:application_version>      
         <md:export_date>19-04-2012</md:export_date>   
          <md:export_time>14:55</md:export_time>   
          <md:export_user>USER01</md:export_user> 
    </md:header>   
    <md:table table_name="CUSTOMER" key="customer number" record_count="2" column_count="5">  
          <md:record>   
                                        <md:column name="customer_number">123456</md:column>   
                                         <md:column name="reg_date">01-04-2012</md:column>   
                                          <md:column name="customer_name">Test Customer</md:column>  
                                          <md:column name="customer_type">Normal </md:column> 
                                          <md:column name="comments">This is a test record</md:column>       
            </md:record>     
             <md:record>             
                                           <md:column name="customer_number">555111</md:column>   
                                            <md:column name="reg_date">02-04-2012</md:column>        
                                            <md:column name="customer_name">Test Customer</md:column>     
                                            <md:column name="customer_type"> </md:column>            
                                             <md:column name="comments">This is a test record</md:column>         
                </md:record>     
      </md:table>
</xml_tool

我的代码:

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;
import java.io.*;

public class ParseXML {

    public static void main(String argv[])throws IOException {

         try {     
             BufferedWriter writer = new BufferedWriter(new FileWriter("results/staff.txt")); 
             File fXmlFile = new File("data/hardware-info.xml");  

             DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();  
             DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();      
             Document doc = dBuilder.parse(fXmlFile);      
             doc.getDocumentElement().normalize();    
             NodeList nList = doc.getElementsByTagName("md:record");     
             for (int i = 0; i < nList.getLength(); i++) 
             {      
                 Node node = nList.item(i);    
                 if (node.getNodeType() == Node.ELEMENT_NODE)    
                 {         
                      Element eElement = (Element) node; 
                     if(eElement.hasChildNodes())    
                     {               
                         NodeList nl = node.getChildNodes();      
                         for(int j=0; j<nl.getLength(); j++)  
                         {                   
                             Node nd = nl.item(j);   
                             String name= nd.getTextContent();
                                f (name != null && !name.trim().equals(""))                                 {
                                    System.out.print(name.trim()+",");   
                                    //System.out.print(" ");
                                    writer.write(nd.getTextContent().trim() + " ");
                                }

                         } 
                         System.out.println("");
                         writer.write("\n");
                         }        
                         } }  
             writer.close();
             } 
         catch (Exception e) {       
                         e.printStackTrace();     } } 
    @SuppressWarnings("unused")
    private static String getTagValue(String sTag, Element eElement)
    {        
        NodeList nlList = eElement.getElementsByTagName(sTag).item(0).getChildNodes();  
        Node nValue = (Node) nlList.item(0);       
        return nValue.getNodeValue();     
        } 
}

此代码的输出:

123456,01-04-2012,Test Customer,Normal,,This is a test record,
555111,02-04-2012,Test Customer,This is a test record,

预期输出:

123456,01-04-2012,Test Customer,Normal,This is a test record
555111,02-04-2012,Test Customer, ,This is a test record

推荐答案

if (name != null)改为

if (name != null && !name.trim().equals(""))

这篇关于将 XML 数据读入文本文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆