【问题标题】:How to get only the top level node's text content with getTextContent()如何使用 getTextContent() 仅获取顶级节点的文本内容
【发布时间】:2011-06-09 08:56:00
【问题描述】:

我试图只获取顶级文本而不获取任何子文本。所以我有以下xml:

<job>
  text1
  <input> text2 </input>
</job>

我只想获取父(text1)文本。所以在这个例子中我会这样做

node.getTextContent();

并得到text1,而不是getTextContent 目前给我的text1text2。现在我已经阅读了pages 的人,我知道他们说 getTextContent 返回所有子项与父项的串联字符串。但我只想从父母那里得到文字。我正在考虑这样做的另一种方法是尝试将父级与子级隔离并仅对父级执行 getTextContent 命令,但我不知道这有多可行。

任何帮助将不胜感激

谢谢,-乔什

【问题讨论】:

    标签: java xml dom xml-parsing


    【解决方案1】:

    node.firstChild.textContent.trim();

    【讨论】:

      【解决方案2】:

      不是这个

      node.getTextContent();
      

      使用这个:

      if (node.getFirstNode() != null) 
      {
        node.getFirstChild().getTextContent();
      }
      

      【讨论】:

        【解决方案3】:

        如果有人对此有疑问,我发现最好的方法是获取节点的所有子节点,然后获取每个子节点的节点类型。如果您在该节点上获得一个文本节点调用 getTextContent() 就可以了!

        【讨论】:

          【解决方案4】:

          我认为您可能可以使用 job/text() 的 xpath,这可能比导航 DOM 模型更容易。

          如果可以,请避免混合内容,使用起来有点麻烦。

          【讨论】:

            【解决方案5】:

            getChildNodes() 有效吗?如果是这样,您可以遍历所有子节点并在它们上调用 getContent(),然后从 node.getContent() 中减去它。这将导致文本不属于子节点。

            最佳答案:不要将文本与子节点混合。我必须仔细检查您提供的 xml 是否合法,它是合法的,但它让我害怕。

            【讨论】:

              【解决方案6】:

              遍历节点的所有子节点并连接那些是文本节点的子节点。或者 XPath。

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2015-02-20
                • 1970-01-01
                相关资源
                最近更新 更多