Java 怎么计算两个XML节点之间的节点xpath

2019年7月29日20:53:54Java 怎么计算两个XML节点之间的节点xpath已关闭评论 548 961字阅读3分12秒

1.简介

Java 怎么计算两个XML节点之间的节点xpath?——请看下文。

2.示例代码

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

 

import java.text.MessageFormat;

import org.w3c.dom.Node;

public class Main {
    public static String computeNodeXPath(Node base, Node node) {
        if (base.isSameNode(node)) {
            return "/";
        }
        short nodeType = node.getNodeType();
        String subpath;
        if (nodeType == Node.ELEMENT_NODE || nodeType == Node.TEXT_NODE) {
            String localName = node.getLocalName().toLowerCase();
            int pos = 0;
            Node sibling = node.getPreviousSibling();
            while (sibling != null) {
                if (sibling.getNodeType() == nodeType) {
                    if (localName.equals(sibling.getLocalName()
                            .toLowerCase())) {
                        ++pos;
                    }
                }
                sibling = sibling.getPreviousSibling();
            }
            if (nodeType == Node.TEXT_NODE) {
                localName = "text()";
            }

            if (pos == 0) {
                subpath = localName;
            } else {
                subpath = MessageFormat.format("{0}[{1}]", localName,
                        new Integer(pos));
            }
        } else {
            System.err.println("Unsupported type " + nodeType);
            subpath = "unknown";
        }
        Node parent = node.getParentNode();
        if (base.isSameNode(parent)) {
            return '/' + subpath;
        } else {
            return computeNodeXPath(base, parent) + '/' + subpath;
        }
    }
}

 
继续阅读
编程十万个怎么办