2 回答

TA贡献1827条经验 获得超8个赞
XML 阅读应该<row>大致如下:
XMLInputFactory xif = XMLInputFactory.newInstance();
// Do not use a Reader, especially not a FileReader. An InputStream leaves the
// encoding of the XML to the XMLStreamReader.
InputStream in = Files.newInputStream(Paths.get("D:/SmallXmltoSplit.xml"));
XMLStreamReader streamReader = xif.createXMLStreamReader(in);
streamReader.nextTag();
String id = "";
String name = "";
String deptId = "";
String oldDeptId = null;
// File file = new File("D:/test" + ".xml");
while (streamReader.hasNext()) {
if (streamReader.isStartElement()) {
switch (streamReader.getLocalName()) {
case "row":
id = "";
name = "";
deptId = "";
break;
case "id":
id = streamReader.getElementText();
break;
case "name":
name = streamReader.getElementText();
break;
case "deptId":
deptId = streamReader.getElementText();
break;
}
}
if (streamReader.isEndElement()) {
switch (streamReader.getLocalName()) {
case "START":
if (oldDeptId != null) {
saveDept();
//oldDeptId = deptId;
}
break;
case "row":
if (!deptId.equals(oldDeptId)) {
if (oldDeptId != null) {
saveDept();
oldDeptId = deptId;
}
startDept(deptId);
}
appendDeptRow(id, name, deptId);
break;
}
}
}
无需转换即可书写;事实上,它可以作为文本完成。
我把它留作练习。
不应使用 FileReader 和 FileWriter,因为它们使用默认平台编码对字节进行编码。这个类Files有很多不错的文件函数。
这里的另一个特色是 UTF-16 编码,它将几乎是 ASCII 文件的大小加倍。当您提到有一个大文件时,最好将该文件保存在 UTF-8 中,可能即使名称是波斯语、希腊语、日语或保加利亚语。
添加回答
举报