【发布时间】: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']。您的代码没有错,只是复杂且缓慢,并且在您开始处理命名空间时会让您养成坏习惯。