/** * return the DOM root of the specified XML file * * @param xmlFile * @return */ public static Element getXMLroot(String xmlFile) { try { DOMParser p = new DOMParser(); p.parse(xmlFile); Document doc = p.getDocument(); return doc.getDocumentElement(); } catch (Exception e) { e.getStackTrace(); logger.fatal(e.getMessage()); } return null; }
/** * XMLを標準出力する。 * * @param my_doc XMLの Document Node 。 * @param sortflag ソートするか否か。 */ public static void output(Document my_doc, boolean sortflag, UDF_Env env) { try { if (sortflag) com.udfv.util.UDF_XML.sortDocumentbyEnv(my_doc, env); OutputFormat format = new OutputFormat(my_doc, "UTF-8", true); format.setLineWidth(0); OutputStreamWriter osw = new OutputStreamWriter(System.out, "UTF-8"); XMLSerializer serial = new XMLSerializer(osw, format); serial.serialize(my_doc.getDocumentElement()); } catch (Exception ex) { ex.printStackTrace(); } }
/** * XMLをファイルに出力する。 * * @param my_doc XMLの Document Node 。 * @param os 出力先のストリーム。 * @param sortflag ソートするか否か。 */ public static void output(Document my_doc, OutputStream os, boolean sortflag, UDF_Env env) { if (sortflag) { try { com.udfv.util.UDF_XML.sortDocumentbyEnv(my_doc, env); } catch (Exception e1) { e1.printStackTrace(); } } try { OutputFormat format = new OutputFormat(my_doc, "UTF-8", true); format.setLineWidth(0); // Writer out = new OutputStreamWriter(new FileOutputStream(file), "UTF-8"); Writer out = new OutputStreamWriter(os, "UTF-8"); XMLSerializer serial = new XMLSerializer(out, format); serial.serialize(my_doc.getDocumentElement()); out.close(); } catch (Exception e2) { e2.printStackTrace(); } }
/** * エラーリストを XMLとして出力する。 * * @param el エラーリスト */ public static void outputError(UDF_ErrorList el) { Document doc = UDF_Util.genDocument(); Element root = doc.createElement("udf-error"); for (int i = 0; i < el.getSize(); i++) { el.getError(i).toXML(doc, root); } doc.appendChild(root); try { OutputFormat format = new OutputFormat(doc, "UTF-8", true); format.setLineWidth(0); OutputStreamWriter osw = new OutputStreamWriter(System.out, "UTF-8"); XMLSerializer serial = new XMLSerializer(osw, format); serial.serialize(doc.getDocumentElement()); } catch (Exception e) { e.printStackTrace(); } }
public boolean performTest(String arg) { boolean passed = true; try { Writer writer = new Writer(false); DOMParser parser = new DOMParser(); if (!arg.equals("delete2") && !arg.equals("insert2")) { if (fStdOut) System.out.println("\n*************** Test == " + arg + " ***************"); for (int i = 0; i < tests.length; i++) { if (fStdOut) System.out.println("\n\nTest[" + i + "]"); if (fStdOut) System.out.println("\nBefore " + arg + ": document=" + tests[i] + ":"); parser.parse(new InputSource(new StringReader(tests[i]))); DocumentImpl document = (DocumentImpl) parser.getDocument(); Range range = document.createRange(); Node root = document.getDocumentElement(); boolean surround = false; Node surroundNode = document.createElement(SURROUND); if (arg.equals("surround")) { surround = true; } if (i == 0) { range.setStart(root.getFirstChild(), 1); range.setEndBefore(root.getLastChild()); if (surround) range.setEnd(root.getLastChild(), 1); } else if (i == 1) { Node n1 = root.getFirstChild().getNextSibling().getFirstChild(); range.setStart(n1, 1); range.setEnd(root.getLastChild(), 1); if (surround) range.setEnd(n1, 2); } else if (i == 2) { range.setStart(root.getFirstChild(), 1); Node n2 = root.getFirstChild().getNextSibling().getFirstChild(); range.setEnd(n2, 1); if (surround) range.setEndBefore(root.getLastChild()); } else if (i == 3) { Node n3 = root.getFirstChild().getFirstChild(); range.setStart(n3, 1); range.setEnd(root.getLastChild().getFirstChild(), 1); if (surround) { range.selectNode(root.getFirstChild().getNextSibling()); } } else if (i == 4) { Node n4 = root.getFirstChild().getFirstChild().getNextSibling().getFirstChild(); range.setStartAfter(n4); range.setEndAfter(root.getLastChild().getFirstChild()); if (surround) { range.selectNodeContents(root.getFirstChild().getNextSibling()); } } if (fStdOut) System.out.println("range.toString=" + range.toString()); DocumentFragment frag = null; if (arg.equals("surround")) { try { if (fStdOut) System.out.println("surroundNode=" + surroundNode); range.surroundContents(surroundNode); } catch (org.w3c.dom.ranges.RangeException e) { if (fStdOut) System.out.println(e); } String result = toString(document); if (fStdOut) System.out.println("After surround: document=" + result + ":"); if (!result.equals(surroundResult[i])) { if (fStdOut) System.out.println("Should be: document=" + surroundResult[i] + ":"); passed = false; if (fStdOut) System.out.println("Test FAILED!"); if (fStdOut) System.out.println("*** Surround document Test[" + i + "] FAILED!"); } } if (arg.equals("insert")) { range.insertNode(document.createTextNode(INSERT)); String result = toString(document); if (fStdOut) System.out.println("After insert: document=" + result + ":"); if (!result.equals(insertResult[i])) { if (fStdOut) System.out.println("Should be: document=" + insertResult[i] + ":"); passed = false; if (fStdOut) System.out.println("Test FAILED!"); if (fStdOut) System.out.println("*** Insert document Test[" + i + "] FAILED!"); } } else if (arg.equals("delete")) { range.deleteContents(); String result = toString(document); if (fStdOut) System.out.println("After delete:" + result + ":"); if (!result.equals(deleteResult[i])) { if (fStdOut) System.out.println("Should be: document=" + deleteResult[i] + ":"); passed = false; if (fStdOut) System.out.println("Test FAILED!"); if (fStdOut) System.out.println("*** Delete document Test[" + i + "] FAILED!"); } } else if (arg.equals("extract")) { frag = range.extractContents(); // range.insertNode(document.createTextNode("^")); String result = toString(document); if (fStdOut) System.out.println("After extract: document=" + result + ":"); if (!result.equals(deleteResult[i])) { if (fStdOut) System.out.println("Should be: document=" + deleteResult[i] + ":"); passed = false; if (fStdOut) System.out.println("*** Extract document Test[" + i + "] FAILED!"); } String fragResult = toString(frag); if (fStdOut) System.out.println("After extract: fragment=" + fragResult + ":"); if (!fragResult.equals(extractResult[i])) { if (fStdOut) System.out.println("Should be: fragment=" + extractResult[i] + ":"); passed = false; if (fStdOut) System.out.println("*** Extract Fragment Test[" + i + "] FAILED!"); } } else if (arg.equals("clone")) { frag = range.cloneContents(); String fragResult = toString(frag); if (fStdOut) System.out.println("After clone: fragment=" + fragResult); if (!fragResult.equals(extractResult[i])) { if (fStdOut) System.out.println("Should be: fragment=" + extractResult[i] + ":"); passed = false; if (fStdOut) System.out.println("*** Clone Fragment Test[" + i + "] FAILED!"); } } } } else if (arg.equals("insert2")) { if (fStdOut) System.out.println("\n*************** Test == " + arg + " ***************"); for (int i = 0; i < 4; i++) { if (fStdOut) System.out.println("\n\nTest[" + i + "]"); if (fStdOut) System.out.println("\nBefore " + arg + ": document=" + INSERT2 + ":"); parser.parse(new InputSource(new StringReader(INSERT2))); DocumentImpl document = (DocumentImpl) parser.getDocument(); Node root = document.getDocumentElement(); Range range = document.createRange(); range.setStart(root.getFirstChild(), 11); range.setEnd(root.getFirstChild(), 18); Range rangei = document.createRange(); if (i == 0) { rangei.setStart(root.getFirstChild(), 10); rangei.setEnd(root.getFirstChild(), 10); } if (i == 1) { rangei.setStart(root.getFirstChild(), 11); rangei.setEnd(root.getFirstChild(), 11); } if (i == 2) { rangei.setStart(root.getFirstChild(), 12); rangei.setEnd(root.getFirstChild(), 12); } if (i == 3) { rangei.setStart(root.getFirstChild(), 17); rangei.setEnd(root.getFirstChild(), 17); } // if (fStdOut) System.out.println("range: start1=="+range.getStartContainer()); // root.insertBefore(document.createTextNode("YES!"), root.getFirstChild()); // if (fStdOut) System.out.println("range: start2=="+range.getStartContainer()); if (DEBUG) if (fStdOut) System.out.println("before insert start=" + range.getStartOffset()); if (DEBUG) if (fStdOut) System.out.println("before insert end=" + range.getEndOffset()); rangei.insertNode(document.createTextNode(INSERTED_TEXT)); if (DEBUG) if (fStdOut) System.out.println("after insert start=" + range.getStartOffset()); if (DEBUG) if (fStdOut) System.out.println("after insert end=" + range.getEndOffset()); String result = toString(document); if (fStdOut) System.out.println("After insert2: document=" + result + ":"); if (!result.equals(rangeInsertResult[i])) { if (fStdOut) System.out.println("Should be: document=" + rangeInsertResult[i] + ":"); passed = false; if (fStdOut) System.out.println("Test FAILED!"); if (fStdOut) System.out.println("*** Delete Ranges document Test[" + i + "] FAILED!"); } } } else if (arg.equals("delete2")) { // // Range Deletion, acting upon another range. // if (fStdOut) System.out.println("\n*************** Test == " + arg + " ***************"); for (int i = 0; i < rangeDelete.length; i++) { if (fStdOut) System.out.println("\n\nTest[" + i + "]"); if (fStdOut) System.out.println("\nBefore " + arg + ": document=" + rangeDelete[i] + ":"); parser.parse(new InputSource(new StringReader(rangeDelete[i]))); DocumentImpl document = (DocumentImpl) parser.getDocument(); Range range = document.createRange(); Range ranged = document.createRange(); Node root = document.getDocumentElement(); boolean surround = false; Node surroundNode = document.createElement(SURROUND); if (arg.equals("surround")) { surround = true; } if (i == 0) { ranged.setStart(root.getFirstChild(), 5); ranged.setEnd(root.getFirstChild(), 14); range.setStart(root.getFirstChild(), 11); range.setEnd(root.getFirstChild(), 19); } else if (i == 1) { ranged.setStart(root.getFirstChild(), 5); ranged.setEnd(root.getFirstChild(), 22); range.setStart(root.getFirstChild(), 11); range.setEnd(root.getFirstChild(), 21); } else if (i == 2) { ranged.setStart(root.getFirstChild(), 5); ranged.setEnd(root.getFirstChild().getNextSibling().getFirstChild(), 1); range.setStart(root.getFirstChild(), 11); range.setEndAfter(root.getFirstChild().getNextSibling().getFirstChild()); } else if (i == 3) { ranged.setStart(root.getFirstChild(), 5); ranged.setEnd(root.getFirstChild(), 11); range.setStart(root.getFirstChild(), 11); range.setEnd(root.getFirstChild(), 21); } else if (i == 4) { ranged.selectNode(root.getFirstChild().getNextSibling()); range.setStart(root.getFirstChild().getNextSibling().getFirstChild(), 6); range.setEnd(root.getFirstChild().getNextSibling().getFirstChild(), 15); } DocumentFragment frag = null; if (arg.equals("delete2")) { if (DEBUG) { if (fStdOut) System.out.println("BEFORE deleteContents()"); if (fStdOut) System.out.println("ranged: startc=" + ranged.getStartContainer()); if (fStdOut) System.out.println("ranged: starto=" + ranged.getStartOffset()); if (fStdOut) System.out.println("ranged: endc=" + ranged.getEndContainer()); if (fStdOut) System.out.println("ranged: endo=" + ranged.getEndOffset()); if (fStdOut) System.out.println("range: startc=" + range.getStartContainer()); if (fStdOut) System.out.println("range: starto=" + range.getStartOffset()); if (fStdOut) System.out.println("range: endc=" + range.getEndContainer()); if (fStdOut) System.out.println("range: endo=" + range.getEndOffset()); } ranged.deleteContents(); String result = null; if (DEBUG) { if (fStdOut) System.out.println("AFTER deleteContents()"); result = toString(document); if (fStdOut) System.out.println("ranged: startc=" + ranged.getStartContainer()); if (fStdOut) System.out.println("ranged: starto=" + ranged.getStartOffset()); if (fStdOut) System.out.println("ranged: endc=" + ranged.getEndContainer()); if (fStdOut) System.out.println("ranged: endo=" + ranged.getEndOffset()); if (fStdOut) System.out.println("range: startc=" + range.getStartContainer()); if (fStdOut) System.out.println("range: starto=" + range.getStartOffset()); if (fStdOut) System.out.println("range: endc=" + range.getEndContainer()); if (fStdOut) System.out.println("range: endo=" + range.getEndOffset()); } ranged.insertNode(document.createTextNode("^")); result = toString(document); if (fStdOut) System.out.println("After delete2: document=" + result + ":"); if (!result.equals(rangeDeleteResult[i])) { if (fStdOut) System.out.println("Should be: document=" + rangeDeleteResult[i] + ":"); passed = false; if (fStdOut) System.out.println("Test FAILED!"); if (fStdOut) System.out.println("*** Delete Ranges document Test[" + i + "] FAILED!"); } } } } } catch (org.xml.sax.SAXParseException spe) { passed = false; } catch (org.xml.sax.SAXException se) { if (se.getException() != null) se.getException().printStackTrace(System.err); else se.printStackTrace(System.err); passed = false; } catch (Exception e) { e.printStackTrace(System.err); passed = false; } if (!passed) if (fStdOut) System.out.println("*** The " + arg + " Test FAILED! ***"); return passed; }