如何确定XML元素是否自动关闭?

时间:2012-07-31 10:08:50

标签: java xml sax saxparser

我用Google搜索,搜索和阅读,但一直无法找到答案。

我的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”-method看起来像

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

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

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

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

1 个答案:

答案 0 :(得分:1)

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