【发布时间】:2014-06-16 16:40:26
【问题描述】:
我有一个包含此类数据的大文件
<releases>
<release>
......
<companies>
<company>
</company>
</companies>
</release>
<release>
......
</releases>
我想生成和输出与输入文件相同的文件,但删除了所有公司元素及其子元素。我正在尝试使用 Stax,我认为它会遍历元素,然后如果我得到一个匹配我不能写那个元素,该部分将被删除。即,如果我丢弃导致其中的元素并被删除的元素,但似乎它只是删除了元素本身而不是其他任何东西,对吗?
即
<releases>
<release>
......
</release>
<release>
......
</releases>
这是我目前拥有的代码:
XMLInputFactory inputFactory = XMLInputFactory.newInstance();
XMLOutputFactory outputFactory = XMLOutputFactory.newInstance();
InputStream in = new FileInputStream(source);
XMLEventReader reader = inputFactory.createXMLEventReader(in);
OutputStream out = new FileOutputStream(target);
XMLEventWriter writer = outputFactory.createXMLEventWriter(out);
XMLEvent event;
while(reader.hasNext()){
event = reader.nextEvent();
writer.add(event);
if(event.getEventType() == XMLStreamConstants.START_ELEMENT)
{
if(event.asStartElement().getName().toString().equalsIgnoreCase("companies"))
{
System.out.println("Deleting:"+event);
continue;
}
else
{
writer.add(event);
}
}
else
{
writer.add(event);
}
}
【问题讨论】: