-2

我需要确定光标是否在 XML 范围内。我已经为 Range 设置了开始和结束文本节点。我想 compareBoundaryPoints 方法在这种情况下不能正常工作。当然,我可能是错的。在 Java 中,我使用com.arbortext.epic.ADocument,org.w3c.dom.ranges.Range导入。 holeRange_是一个org.w3c.dom.ranges.Range对象。

holeRange_ = ((DocumentRange) txtProcessor_.GetDocument()).createRange();
holeRange_.setStart(startNode, 0); //text node
holeRange_.setEndAfter(endNode); //text node

这是单击事件处理程序的主体:

Range caretRange = ((ADocument) txtProcessor_.GetDocument()).getInsertionPoint();
    if (caretRange != null) {
     DebugMode.println(caretRange.getStartContainer().getNodeValue());
     DebugMode.println("END_TO_START = " +
      textNodeRange_.compareBoundaryPoints(Range.END_TO_START, caretRange));
     DebugMode.println("START_TO_END = " + 
      holeRange_.compareBoundaryPoints(Range.START_TO_END, caretRange));
    }

当光标在范围内时,输出给出 END_TO_START = -1 和 START_TO_END = -1。根据检查指定元素是否在选择内,值应该是:END_TO_START = -1 和 START_TO_END = 1。问题是否与它相关: https ://bugs.eclipse.org/bugs/show_bug.cgi?id=148126

4

1 回答 1

1

累了兄弟!我已经为从 xerces c++ XML 库到 Java 的 Range 对象制作了三个方法 ( compareBoundaryPoints, isAncestorOf, ) 的小端口。indexOf我忘记了 Xerces2 Java。
好吧,我做了一组实验,表明 xercescompareBoundaryPoints实现更合适。

于 2012-04-28T10:02:01.060 回答