【问题标题】:How to find out if XML element is self-closing?如何确定 XML 元素是否自关闭?
【发布时间】:2012-07-31 10:08:50
【问题描述】:

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

我的 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:我必须转换大小高达数百兆字节的文件。在提出替代解决方案时请牢记这一点。

【问题讨论】:

  • 您是手动写出 XML 吗?这是一个很大的禁忌。您应该改用 javax.xml.transform API。
  • 这并不能很好地回答您的问题,但我强烈建议您使用 jdom 之类的框架来处理此类事情。它消除了很多痛苦。
  • 发布您用于读取/写入 xml 的代码,以便我们提供帮助。
  • 我尝试编写一个简单的示例,因为我的代码非常庞大。我可能应该从一开始就使用不同的方法。对不起。
  • 但是如果有人知道原始问题的简单答案,我认为其他人可能仍然会感兴趣,所以我暂时保留这个问题。

标签: java xml sax saxparser


【解决方案1】:

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

【讨论】:

  • 是的,我已经阅读了它。将此问题保留为警告。
猜你喜欢
  • 1970-01-01
  • 2021-10-15
  • 2020-01-26
  • 1970-01-01
  • 1970-01-01
  • 2021-07-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多