jdom解析xml

jdom解析中所有的节点都是以Element对象为存在的。

但是在解析过程中大家要小心namespace,命名空间,看两段xml文件:

1:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<x>  
 <a>a</a>
</x>


2:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<x xmlns="http://www.xxxx.com">  
 <a>a</a>
</x>


解析代码片段:
e.getChildTextTrim("a");

当解析片段1时:能顺利取得结果a;
当解析片段2时:取得结果为null;

贴两段源码:
public String getChildText(final String name) {
        final Element child = getChild(name);
        if (child == null) {
            return null;
        }
        return child.getText();
    }

public Element getChild(final String name) {
        return getChild(name, [color=red]Namespace.NO_NAMESPACE[/color]);
    }

[color=red]public static final Namespace NO_NAMESPACE = new Namespace("", "");[/color]


当解析片段2时,因为默认的namespace为空,程序在getChild时取不到对应的节点元素,尽管该节点是存在,因为默认namespace的缘故无法取得。

所以当我们的xml文件的命名空间有变化时,也许我们的代码就需要有改变了,或者让它来适应这个变化的需求。

你可能感兴趣的:(xml,jdom,element)