【问题标题】:How to add string content in xml nodes(empty node/append to existing content) using XPath Query如何使用 XPath Query 在 xml 节点中添加字符串内容(空节点/追加到现有内容)
【发布时间】:2011-05-22 06:24:40
【问题描述】:

我已经有了以下 xml 结构,子节点作为标题、desc、symp、diag、treat addinfo 等。我想检查 addinfo 是否包含任何东西,并附加一些字符串,例如“这是附加信息”。有很多疾病标题我需要根据疾病标题标签检查addifo标签。

<chapter>
  <disease type="Name">
    <title>Name</title>
    <desc>--------------</desc>
    <symp>--------------</symptoms>
    <diag>-------------</diagnosis>
    <treat>-------------</treatment>
    <addinfo></addinfo>
  </disease>
</chapter

>

我正在使用 XPath 查询根据疾病名称搜索标签的内容。 谢谢

【问题讨论】:

  • 不知道疾病类型,坦率地说,这无关紧要:-)
  • 移除了疾病类型。我的意思是我将搜索标题标签,如果它匹配,它将进入 addinfo 并检查它是否为空。如果为空将添加一些值,如果不是将附加一些值。而已。谢谢
  • 目前使用这样的 Xpath 查询来获取任何标签的值。 String rawXPath = String.format("//chapter/disease[title= '%s']/desc/text()", someValue);

标签: java xml xpath


【解决方案1】:

XPath 只能从您的文档中检索信息,它不能修改它。

XQuery 可以生成文档的修改副本,但这并不是特别容易,因为您需要明确复制所有不想更改的部分。

XSLT 是生成文档修改副本的更好选择;或 XQuery 更新工具(如果您愿意)。

【讨论】:

    【解决方案2】:

    您可以使用这样的 XPath 来查看 addinfo 是否为空://addinfo[not(node())]

    更新:

    好的,现在完全不知道你想要什么。这听起来像是一个非常简单的问题。您将创建某种getText() 方法,该方法给定一个XML 节点,获取与其关联的文本(如果有或返回null 或空字符串)。然后你会遍历所有的疾病,对于每一种疾病,执行你的逻辑:if( string.isNullOrEmpty(getText(disease, "addinfo")) ) { // do something }——如果你想检查 addinfo 是否为空或添加东西等等。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-01
      • 1970-01-01
      • 2011-07-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多