【问题标题】:how to check that XML element contains CDATA?如何检查 XML 元素是否包含 CDATA?
【发布时间】:2012-01-26 14:26:32
【问题描述】:

我正在用 java 解析一个 XML 文件。我如何知道元素是否包含 CDATA?换句话说如何识别包含 CDATA 的元素?谢谢

WL

【问题讨论】:

  • 您的意思是<[![CDATA ... ]]> 部分?没有办法检测到它们,但幸运的是,您也绝对不需要检测它们。
  • 一些解析器确实会暴露 CDATA 块(虽然我无法说出其中的一个)......但正如 Tomalak 所说,你永远不需要关心。
  • 那么我怎样才能得到那个元素的值。在 CDATA 部分,我可以像 nl.item(0).getFirstChild().getNodeValue() 一样得到它。其中 nl 是 nodelist 但我无法在涉及 CDATA 的地方得到它。请帮忙
  • 事实上,我正在打开一个 xml 文件并根据需要进行一些更改,然后将其保存回同一文件或新文件中。在解析时,我甚至可以通过在整个文件上应用 documentBuilderFactory.setCoalescing(true) 来获取涉及 CDATA 的数据,但是当我写回它时,我需要知道哪些元素具有 CDATA,以便我可以相应地写回文件。有什么建议吗?

标签: java xml cdata


【解决方案1】:

您必须阅读标签的文本,然后查找 CDATA 是否存在于文本中,并带有字符串 contains 等。有点像:

String cdata = data.text("xmltag");
cdata.contains("cdata")....

【讨论】:

  • 'cdata' 标签在保存到数据库时被省略,但内容被保留。所以你不能真正检查字符串是否有 cdata 标签,因为它永远不会有
  • 投反对票?问题不问数据库,只解析文件。
  • @jasonflaherty 如果您使用 DOM 之类的 XML 解析器并获取 InnerText 属性值,您将获得删除或不删除空格的文本,具体取决于内容是否包含在 CDATA 部分中,但您永远不会知道是不是因为您只获得了 CDATA 部分的内容。只有当您自己阅读和解析原始 XML 并且没有多少人以这种方式使用 XML 时,您的方法才有效。
猜你喜欢
  • 2012-11-10
  • 2023-03-06
  • 1970-01-01
  • 2021-07-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-16
  • 2014-04-30
相关资源
最近更新 更多