我想知道是否有人知道是否可以使用 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/