Java 怎么检查是否可以将列表中的任何节点附加到给定的父XML节点

2019年8月7日21:01:29Java 怎么检查是否可以将列表中的任何节点附加到给定的父XML节点已关闭评论 455 1093字阅读3分38秒

1.简介

Java 怎么检查是否可以将列表中的任何节点附加到给定的父XML节点?——请看下文。

2.示例代码

/**
 * 版权所有 编程十万个怎么办(www.tah1986.com)
 */



import java.util.ArrayList;

import org.w3c.dom.Node;

public class Main {
    
    public static boolean canAppendAny(ArrayList children, Node parentNode) {
        if (!canHaveChildren(parentNode)) {
            return false;
        }
        int n = children.size();
        for (int i = 0; i < n; i++) {
            Node child = (Node) children.get(i);
            if (canAppend(child, parentNode)) {
                return true;
            }
        }
        return false;
    }

    
    public static boolean canHaveChildren(Node parentNode) {
        if (parentNode == null) {
            return false;
        }
        switch (parentNode.getNodeType()) {
        case Node.DOCUMENT_NODE:
        case Node.TEXT_NODE:
        case Node.COMMENT_NODE:
        case Node.CDATA_SECTION_NODE:
        case Node.PROCESSING_INSTRUCTION_NODE:
            return false;
        default:
            return true;
        }
    }

    
    public static boolean canAppend(Node node, Node parentNode) {
        if (node == null || parentNode == null || node == parentNode
                || isAncestorOf(node, parentNode)) {
            return false;
        }
        return true;
    }

    
    public static boolean isAncestorOf(Node node, Node descendant) {
        if (node == null || descendant == null) {
            return false;
        }
        for (Node currentNode = descendant.getParentNode(); currentNode != null; currentNode = currentNode
                .getParentNode()) {
            if (currentNode == node) {
                return true;
            }
        }
        return false;
    }
}

 
继续阅读