加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

如何在Java dom xml解析中从我的Node解析中删除#text

发布时间:2020-12-15 02:51:19 所属栏目:Java 来源:网络整理
导读:所以我有以下代码,我几乎从 here复制.但问题是我的文本节点不包含任何文本,他们只有属性.所以我喜欢 Random name="Katie" num="5"/Random 我正在使用此代码来解析它: private void listNodes(Node node,String indent) { String nodeName = node.getNodeNam
所以我有以下代码,我几乎从 here复制.但问题是我的文本节点不包含任何文本,他们只有属性.所以我喜欢
<Random name="Katie" num="5"></Random>

我正在使用此代码来解析它:

private void listNodes(Node node,String indent)
  {
    String nodeName = node.getNodeName();
    System.out.println(indent + " Node is: " + nodeName);

    if(node instanceof Element && node.hasAttributes())
    {
      System.out.println(indent + "Attributes are: ");
      NamedNodeMap attrs = node.getAttributes();
      for (int i = 0; i < attrs.getLength(); i++) 
      {
        Attr attribute = (Attr) attrs.item(i);
        System.out.println(indent + attribute.getName() + "=" + attribute.getValue());
      }
    }

    NodeList list = node.getChildNodes(); 

    if (list.getLength() > 0) 
    {
      for (int i = 0; i < list.getLength(); i++)
      {
        listNodes(list.item(i),indent + " "); 
      } 
    }
  }

出于某种原因,我的空文本节点都说

Node is: #text

有谁知道在解析xml文件时如何跳过空节点文本?

谢谢,

玩笑

解决方法

使用DTD验证,您可以让解析器自动抑制元素之间的空白.但是,要修改特定实现,可以测试Text节点,如果它们为空则忽略它们.
private void listNodes(Node node,String indent)
{
    if (node instanceof Text) {
        String value = node.getNodeValue().trim();
        if (value.equals("") ) {
            return;
        }
    }

    String nodeName = node.getNodeName();
    System.out.println(indent + " Node is: " + nodeName);
    ...

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读