【问题标题】:get the attribute value in dom4j in java在java中获取dom4j中的属性值
【发布时间】:2018-03-13 01:41:56
【问题描述】:
                  <Address>
                <Street>33 S 3rd st</Street><Street/><Street/><Street/>     
                 <PostalCode>95130</PostalCode>
                 <Country isoCountryCode= "US" >United 
                  States</Country>
                    </Address>

这是我的 XML。我需要一个国家代码“US”。我正在使用 XML dom4j 并遵循它的教程。

这是我的代码 sn-p

     List<Node> list1 = e.selectNodes("//*[name() = 'Address']");
     for(Node n: list1)      
      {     
      System.out.println("CC"+n.valueOf("@isoCountryCode"));
      }

当我像上面那样尝试时,它正在打印 null。我能知道我哪里出错了吗?

【问题讨论】:

  • 也许你应该循环出地址元素的子节点?
  • 那么,您使用 selectNodes 选择什么元素,国家代码属性实际上在哪个元素上?您正在选择地址,但国家代码位于国家/地区。所以从逻辑上讲,你不会得到结果。
  • 使用//Address 而不是//*[name()='Address']。您的代码没有错,只是复杂且缓慢,并且在您开始处理命名空间时会让您养成坏习惯。

标签: java xml dom4j


【解决方案1】:

您可以尝试使用以下代码检索国家/地区代码的属性值。

List<Node> list2 = e.selectNodes("//*[name() = 'Country']");
                        for(Node n1: list2)
                        {
                            Element element2 = (Element) n1;
                            String a1 = element2.attributeValue("isoCountryCode");
                            System.out.println("CC"+a1);
                        }

【讨论】:

    【解决方案2】:

    试试这个代码

    List<Node> list1 = e.selectNodes("//*[name() = 'Address']");
         for(Node n: list1)      
          {     
          System.out.println("CC"+n.selectSingleNode("Country").valueOf("@isoCountryCode"));
          }
    

    【讨论】:

    • 感谢您的解决方案
    猜你喜欢
    • 2012-09-05
    • 1970-01-01
    • 2013-01-18
    • 2011-12-10
    • 2013-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-13
    相关资源
    最近更新 更多