我想請閱讀 Java中的XML文件,然後更新該文件中的某些元素具有新值。我的文件大於200mb,性能很重要,所以DOM模型不能使用。Java修改XML
我覺得一個STAX解析器是解決方案,但沒有像樣的文學使用Java STAX到讀書寫字 XML回到同一文件。
(僅供參考我一直在使用the java tutorial和this helpful tutorial得到什麼我到目前爲止)我使用的Java 7
,但似乎並沒有是因爲XML解析API的任何更新.. 。很久以前。所以這可能不相關。
目前我有這樣的:
public static String readValueFromXML(final File xmlFile, final String value) throws FileNotFoundException, XMLStreamException
{
XMLEventReader reader = new XMLInputFactory.newFactory().createXMLEventReader(new FileReader(xmlFile));
String found = "";
boolean read = false;
while (reader.hasNext())
{
XMLEvent event = reader.nextEvent();
if (event.isStartElement() &&
event.asStartElement().getName().getLocalPart().equals(value))
{
read = true;
}
if (event.isCharacters() && read)
{
found = event.asCharacters().getData();
break;
}
}
return found;
}
這將讀取XMLFILE並返回所選元素的值。但是,我有另一種方法updateXMLFile(final File xmlFile, final String value)
,我想與此結合使用。
所以我的問題有三個方面:
- 是否有STAX實現了編輯XML
- 威爾的XPath是任何幫助嗎?沒有將我的文件轉換爲
Document
可以使用嗎? - (更普遍的)爲什麼不是Java有一個更好的XML API?
可以使用STAX作家。並寫下你剛剛讀到的內容。您應該寫入不同的文件,然後刪除原始文件並重命名臨時文件。 – talex
不會寫入新文件涉及將原始內容中的每個元素讀入內存? – Rossiar
是的。但這是不可避免的。你需要找到一個地方在哪裏編輯。 – talex