在java中将XML文件保存为TXT

在java中将XML文件保存为TXT,java,xml,tags,package,simple-xml-converter,Java,Xml,Tags,Package,Simple Xml Converter,我从XML标记中检索了所需的数据。 在这方面,我使用了相关的软件包。 现在我想将结果保存在一个.txt文件中,但我不知道如何在代码中使用FileWriter? 我尝试了好几次,但是我在控制台中得到了一个没有打印结果的空白文本文件。有人能帮我把结果保存到txt吗 package XMLConvertor; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.DocumentBuilder; import

我从XML标记中检索了所需的数据。 在这方面,我使用了相关的软件包。 现在我想将结果保存在一个.txt文件中,但我不知道如何在代码中使用FileWriter? 我尝试了好几次,但是我在控制台中得到了一个没有打印结果的空白文本文件。有人能帮我把结果保存到txt吗

package XMLConvertor;
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.File;

public class Sample {

  public static void main(String argv[]) {

    try {
//SourceFile
    File fXmlFile = new File("~/Downloads/Teacher.xml");
    DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
    DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
    Document doc = dBuilder.parse(fXmlFile);
//规范化 doc.getDocumentElement().normalize()

System.out.println(“根元素:+doc.getDocumentElement().getNodeName());
//教师姓名标签
NodeList nList=doc.getElementsByTagName(“教师名称”);
System.out.println(“-------------------------------”;
对于(int-temp=0;temp
是你在这里做的

// write the content into xml file
    TransformerFactory transformerFactory = TransformerFactory.newInstance();
    Transformer transformer = transformerFactory.newTransformer();
    DOMSource source = new DOMSource(doc);
    StreamResult result = new StreamResult(new File("C:\\file.xml"));

    // Output to console for testing
    // StreamResult result = new StreamResult(System.out);

    transformer.transform(source, result);
有关更多信息,请访问:

或者,您可以使用transform方法将其传递到StringWriter。 你可以这样做,因为你有一个字符串

StringWriter sw = new StrinWriter();
transformer.transform(source, new StreamResult(sw));
FileWriter fw = new FileWriter("file.txt")
fw.write(sw.toString();
fw.close()
给你:

    package XMLConvertor;
    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.File;
    import javax.xml.transform.Transformer;
    import javax.xml.transform.TransformerException;
    import javax.xml.transform.TransformerFactory;
    import javax.xml.transform.dom.DOMSource;
    import javax.xml.transform.stream.StreamResult

    public class Sample {

      public static void main(String argv[]) {

        try {
    //SourceFile
        File fXmlFile = new File("~/Downloads/Teacher.xml");
        DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
        DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
        Document doc = dBuilder.parse(fXmlFile);
// write the content into xml file
    TransformerFactory transformerFactory = TransformerFactory.newInstance();
    Transformer transformer = transformerFactory.newTransformer();
    DOMSource source = new DOMSource(doc);
    StreamResult result = new StreamResult(new File("~/Downloads/file.xml"));

    // Output to console for testing
    // StreamResult result = new StreamResult(System.out);

    transformer.transform(source, result);
     System.out.println("Root element :" + doc.getDocumentElement().getNodeName());
    //Teacher name tags
        NodeList nList = doc.getElementsByTagName("TeacherName");

        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("Name: " + eElement.getElementsByTagName("Name").item(0).getTextContent());
            }
            }

            }
        }
        } catch (Exception e) {
        e.printStackTrace();
        }
      }

    }
包xmlconverter;
导入javax.xml.parsers.DocumentBuilderFactory;
导入javax.xml.parsers.DocumentBuilder;
导入org.w3c.dom.Document;
导入org.w3c.dom.NodeList;
导入org.w3c.dom.Node;
导入org.w3c.dom.Element;
导入java.io.File;
导入javax.xml.transform.Transformer;
导入javax.xml.transform.TransformerException;
导入javax.xml.transform.TransformerFactory;
导入javax.xml.transform.dom.DOMSource;
导入javax.xml.transform.stream.StreamResult
公共类样本{
公共静态void main(字符串argv[]){
试一试{
//源文件
File fXmlFile=新文件(“~/Downloads/Teacher.xml”);
DocumentBuilderFactory dbFactory=DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder=dbFactory.newDocumentBuilder();
documentdoc=dBuilder.parse(fXmlFile);
//将内容写入xml文件
TransformerFactory TransformerFactory=TransformerFactory.newInstance();
Transformer Transformer=transformerFactory.newTransformer();
DOMSource=新的DOMSource(doc);
StreamResult=newstreamresult(新文件(“~/Downloads/File.xml”);
//输出到控制台进行测试
//StreamResult结果=新的StreamResult(System.out);
变换(源、结果);
System.out.println(“根元素:+doc.getDocumentElement().getNodeName());
//教师姓名标签
NodeList nList=doc.getElementsByTagName(“教师名称”);
System.out.println(“-------------------------------”;
对于(int-temp=0;temp
这里是带有绝对路径的代码:

File fXmlFile = new File("/home/user/Downloads/Teacher.xml");
        DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
        DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
        Document doc = dBuilder.parse(fXmlFile);

        TransformerFactory transformerFactory = TransformerFactory.newInstance();
        Transformer transformer = transformerFactory.newTransformer();
        DOMSource source = new DOMSource(doc);
        StreamResult result = new StreamResult(new File("/home/user/Downloads/file.xml"));
        transformer.transform(source, result);
这里我们替换“~”:


结果如下: 这只是我做的一个虚拟测试。我想知道如何将它保存在文本文件中

TeacherName 
--------------------------------
Sara 
Marry
John

好的,根据您的回答,我为您准备了这段代码,我已经使用Strin builder来存储输出,并使用FileWriter将它们写入txt文件

 public static void main(String[] args)
{

    try
    {

        File fXmlFile = new File("~/Downloads/Teacher.xml".replaceFirst("^~", System.getProperty("user.home")));
        DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
        DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
        Document doc = dBuilder.parse(fXmlFile);



        System.out.println("Root element :" + doc.getDocumentElement().getNodeName());
        //Teacher name tags

        StringBuilder result = new StringBuilder(doc.getDocumentElement().getNodeName() + "\n----------------------------\n");

        NodeList nList = doc.getElementsByTagName("TeacherName");

        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("Name: " + eElement.getElementsByTagName("Name").item(0).getTextContent());
                result.append(String.format("%s\n", eElement.getElementsByTagName("Name").item(0).getTextContent()));
            }
        }

        FileWriter writer = new FileWriter(new File("~/Downloads/file.xml".replaceFirst("^~", System.getProperty("user.home"))));
        writer.write(result.toString());
        writer.close();
    }
    catch (Exception e)
    {
        e.printStackTrace();
    }
}
publicstaticvoidmain(字符串[]args)
{
尝试
{
File fXmlFile=新文件(“~/Downloads/Teacher.xml”.replaceFirst(^~”,System.getProperty(“user.home”);
DocumentBuilderFactory dbFactory=DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder=dbFactory.newDocumentBuilder();
documentdoc=dBuilder.parse(fXmlFile);
System.out.println(“根元素:+doc.getDocumentElement().getNodeName());
//教师姓名标签
StringBuilder结果=新的StringBuilder(doc.getDocumentElement().getNodeName()+“\n-------------------------------------------\n”);
NodeList nList=doc.getElementsByTagName(“教师名称”);
System.out.println(“-------------------------------”;
对于(int-temp=0;temp

我已经测试了thic代码,它运行:)

是否可以让我知道,我应该在源代码中的什么地方添加它?我会在分析和构建xmltreeIt之后添加它。下面添加了:好的,我已经测试了thic代码,我已经注释掉了xmltree上的所有代码。简而言之,这个诡计是写出来的。也许文件路径是绝对路径,我忘记说的是,“~”是linux上的一个短路径,java不理解。我认为最好用System.getProperty(“user.home”)替换ith来处理“~”,它会根据您的home提供一个abyolute路径
TeacherName 
--------------------------------
Sara 
Marry
John
 public static void main(String[] args)
{

    try
    {

        File fXmlFile = new File("~/Downloads/Teacher.xml".replaceFirst("^~", System.getProperty("user.home")));
        DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
        DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
        Document doc = dBuilder.parse(fXmlFile);



        System.out.println("Root element :" + doc.getDocumentElement().getNodeName());
        //Teacher name tags

        StringBuilder result = new StringBuilder(doc.getDocumentElement().getNodeName() + "\n----------------------------\n");

        NodeList nList = doc.getElementsByTagName("TeacherName");

        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("Name: " + eElement.getElementsByTagName("Name").item(0).getTextContent());
                result.append(String.format("%s\n", eElement.getElementsByTagName("Name").item(0).getTextContent()));
            }
        }

        FileWriter writer = new FileWriter(new File("~/Downloads/file.xml".replaceFirst("^~", System.getProperty("user.home"))));
        writer.write(result.toString());
        writer.close();
    }
    catch (Exception e)
    {
        e.printStackTrace();
    }
}