1

我用谷歌搜索、搜索和阅读,但一直找不到答案。

我的 XML 文件看起来有点像这样:

<Patient PID="5" Disease="Flu" FavoriteBird="Norwegian Blue"/>
<Patient PID="33" Disease="Thripshaw's Disease" FavoriteBird="Dodo">
    <Contact Hospitalized="2013 05 30"/>
</Patient>

我想匿名每个患者最喜欢的鸟。也就是说,产生如下所示的输出:

<Patient PID="5" Disease="Flu"/>
<Patient PID="33" Disease="Thripshaw's Disease">
    <Contact Hospitalized="2013 05 30"/>
</Patient>

一切都很顺利,除了我只能处理最后一种类型的患者标签——也就是说,当元素没有自动关闭时。

我的“endElement”方法看起来像

out.write(qName + "/n>")

并且永远不会为第一种类型的 Patient 标签调用。

我该怎么办?如果有办法找出标签是否自动关闭,我可以轻松修复它。

PS:我必须转换大小高达数百兆字节的文件。在建议替代解决方案时请记住这一点。

4

1 回答 1

1

您可以在大约五行 XSLT 中完成此操作,而不是您现在拥有的无疑更多的 SAX 处理行,并且它可以正确地用于任何合法的 XML。

于 2012-07-31T11:09:26.817 回答