Java按元素排序Xml

时间:2018-02-25 14:44:53

标签: java xml sorting dom

我正在尝试对此XMl进行排序

<phoneBook first="JJ">
    <last>Jo</last>
    <type>Cellphone</type>
</phoneBook>

由元素持续。

public static Map<String, Node> sortElements(Document doc, Map<String, Node> map, String sortBy){
        if(map == null)
            map = new HashMap<>();
        NodeList selection =doc.getElementsByTagName("phoneBook");      
        for(int i = 0; i < selection.getLength(); i++){
            Node rel = selection.item(i);
            for(int j = 0; j < rel.getChildNodes().getLength(); j++){
                Node jn = rel.getChildNodes().item(j);
                if(jn.getNodeName().equals(sortBy)){
                    map.put(jn.getNodeValue(), rel);
                }}}
        return new TreeMap<>(map);
    }

不幸的是一个节点是空的。它会抛出NPE! 我在DOM Parser中调用了这样的方法!

SortPhoneBook.sortElements(doc, null, "last");

有人能帮助我吗?

1 个答案:

答案 0 :(得分:0)

您将空值放入地图键。

您的代码:

map.put(jn.getNodeValue(), rel);

只需将其替换为:

map.put(jn.getTextContent(), rel);