gpt4 book ai didi

java - 将 XML 数据读取到文本文件中

转载 作者:行者123 更新时间:2023-12-01 15:14:43 27 4
gpt4 key购买 nike

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

示例 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

最佳答案

我怀疑这是你的问题:

String name = nd.getTextContent();
if (name != null)

您可能想要:

String name = nd.getTextContent();
if (name != null && name.length() > 0)

关于java - 将 XML 数据读取到文本文件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11790153/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com