java - 在 Java 中复制 XML 文件以写入新的 XML 文件

标签 java xml file-io xml-parsing bufferedreader

我想知道是否有人知道是否可以使用 Java 中的一个 XML 解析器来逐行读取 XML 文档中的每一行,并基本上在另一个 XML 文件中再现相同的文档? (在我的例子中,只取文档中从点 X 到点 Y 的行并复制它们)。我考虑过在小型试运行中使用 bufferedreader 和 bufferedwriter,但它并没有完全正确地输出文件。下面是我在试运行中所做的,但这不是我想要的。那么有没有人对此有任何经验或有任何想法或建议?提前谢谢你。

Java 代码

public class IPDriver 
{
    public static void main(String[] args) throws IOException
    {
        BufferedReader reader = new BufferedReader(new FileReader("C:/Documents and Settings/user/workspace/Intern Project/Proposals/Converted Proposals/Extracted Items/ProposalOne/word/document.xml"));
        BufferedWriter writer = new BufferedWriter(new FileWriter("C:/Documents and Settings/user/workspace/Intern Project/Proposals/Converted Proposals/Extracted Items/ProposalOne/word/tempdocument.xml"));

        String line = null;

        while ((line = reader.readLine()) != null)
        {
            writer.write(line);
        }

        // Close to unlock.
        reader.close();
        // Close to unlock and flush to disk.
        writer.close();
    }
}

感谢 Ted Hopp 的工作 JAVA 代码

public class IPDriver 
    {
        public static void main(String[] args) throws IOException
        {
            BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream("C:/Documents and Settings/user/workspace/Intern Project/Proposals/Converted Proposals/Extracted Items/ProposalOne/word/document.xml"), "UTF-8"));
            BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("C:/Documents and Settings/user/workspace/Intern Project/Proposals/Converted Proposals/Extracted Items/ProposalOne/word/tempdocument.xml"), "UTF-8"));

            String line = null;

            while ((line = reader.readLine()) != null)
            {
                writer.write(line);
            }

            // Close to unlock.
            reader.close();
            // Close to unlock and flush to disk.
            writer.close();
        }
    }

最佳答案

如果您的代码没有正确复制文件,我猜您遇到了字符编码问题。由于 XML 的默认编码是 UTF-8,而 FileReader 的默认编码是您平台的默认编码,我建议改为这样做:

BufferedReader reader = new BufferedReader(
    new InputStreamReader(
        new FileInputStream("...input file path..."),
        "UTF-8"
    )
);
BufferedWriter writer = new BufferedWriter(
    new OutputStreamWriter(
        new FileOutputStream("...output file path..."),
        "UTF-8"
    )
);

XML 解析器将为您提供元素(或元素事件),而不是行。例如,他们无法区分空白的变化:

<tag attr1="val1" attr2="val2" />

对比:

<tag attr1="val1"
     attr2="val2"
     />

如果您的要求包括区分这两种情况,那么 XML 解析器方法将不起作用。

关于java - 在 Java 中复制 XML 文件以写入新的 XML 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6523964/

相关文章:

android - Android 阿拉伯字母的 keyCodes

VB.Net双击打开自定义文件时触发什么事件?

c - 如何在 Linux 中检测是否有任何其他实体/进程正在写入文件?

unix - mmap 超出文件末尾

java - 纠正上限类类型 Iterable 和上限通配符 List 字段 Iterator 类型

java - 如何在具有空布局的 JPanel 中添加 JTable?

java - 我怎样才能得到一个数组的迭代器?

xml - 使用perl脚本拆分xml文件

Java,这是一个无限循环吗?

xml - 是否有任何 Android XML 文档?