Java 类org.w3c.dom.ranges.DocumentRange 实例源码
项目:icetone
文件:XHTMLSelectionHighlighter.java
private boolean checkDocument() {
while (true) {
if (this.document != panel.getDocument() || textInlineMap == null) {
this.document = panel.getDocument();
textInlineMap = null;
this.dotInfo = null;
this.markInfo = null;
this.lastSelectionRange = null;
try {
this.docRange = (DocumentRange) panel.getDocument();
this.docTraversal = (DocumentTraversal) panel.getDocument();
if (this.document != null && this.createMaps()) {
return true;
}
try {
Thread.sleep(10);
} catch (InterruptedException e) {
return false;
}
} catch (ClassCastException cce) {
XRLog.layout(Level.WARNING, "Document instance cannot create ranges: no selection possible");
return false;
}
}
return true;
}
}
项目:purple-include
文件:QuoteAddress.java
public String resolve(String infileAddress,
String content,
String mimeType) throws AddressException{
try{
// get the start and end of the text to find
String pieces[] = infileAddress.split("\\.\\.\\.");
if(pieces == null || pieces.length != 2){
throw new AddressException("Invalid quote address: "
+ infileAddress);
}
String start = pieces[0];
String end = pieces[1];
//System.out.println("start="+start);
//System.out.println("end="+end);
// parse content into a DOM
Document document = parseDocument(content);
// now find the beginning and end of the ranges that
// match this text
Node body = document.getElementsByTagName("body").item(0);
Range range = ((DocumentRange)document).createRange();
DocumentTraversal traverse = (DocumentTraversal)document;
NodeFilter filter = null;
NodeIterator nodes =
traverse.createNodeIterator(body,
NodeFilter.SHOW_CDATA_SECTION | NodeFilter.SHOW_TEXT,
filter, true);
boolean results = findString(range, START, nodes, start);
if(results == false){
throw new AddressException("Unable to find start of quote range: "
+ start);
}
// jump the node iterator backwards one; this is for cases
// where the start and end text are in the same node
nodes.previousNode();
//System.out.println("nodes="+nodes);
results = findString(range, END, nodes, end);
if(results == false){
throw new AddressException("Unable to find end of quote range: "
+ end);
}
// get the fragment represented by this range
DocumentFragment fragment = range.cloneContents();
// serialize fragment into string
//System.out.println("fragment="+fragment);
return serialize((Node)fragment);
}catch(Exception e){
e.printStackTrace();
throw new AddressException(e);
}
}