【发布时间】:2015-05-21 06:47:09
【问题描述】:
我正在使用 Saxon 9API 执行 XQuery。 XQuery 的结果以 net.sf.saxon.s9api.XdmValue 的形式返回。我正在从这个 XdmValue 构造 DOM 文档对象。我正在粘贴下面的代码。
Processor saxon = new Processor(false);
saxon.registerExtensionFunction(new MyExtension());
XQueryCompiler compiler = saxon.newXQueryCompiler();
XQueryExecutable exec = compiler.compile(new File("input/studentXQuery.xq"));
XQueryEvaluator query = exec.load();
String students = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><student_list><student><name>George Washington</name><major>Politics</major><phone>312-123-4567</phone><email>gw@example.edu</email></student><student><name>Janet Jones</name><major>Undeclared</major><phone>311-122-2233</phone><email>janetj@example.edu</email></student><student><name>Joe Taylor</name><major>Engineering</major><phone>211-111-2333</phone><email>joe@example.edu</email></student></student_list>";
javax.xml.parsers.DocumentBuilder db = DocumentBuilderFactory.newInstance().newDocumentBuilder();
InputSource is = new InputSource();
is.setCharacterStream(new StringReader(students));
Document doc1 = db.parse(is);
DocumentBuilder builder = saxon.newDocumentBuilder();
Source src = new DOMSource(doc1);
XdmNode doc = builder.build(src);
query.setExternalVariable(new QName("student_list"), doc);
XdmValue result = query.evaluate();
System.out.println("Result is -------- "+result.toString());
InputSource is1 = new InputSource();
is1.setCharacterStream(new StringReader(result.toString()));
Document resultDoc = db.parse(is1);
System.out.println("Result doc is "+resultDoc);
我的问题是将这个输出作为 XmlType 存储在 Oracle DB 中的更好方法是什么。是否需要构建 DOM 文档以避免处理字符串来保存 xml 值?或者它是在字符串本身之上构造 XmlType 的好方法吗?非常感谢任何帮助。
【问题讨论】: