考虑以下XML:
<Employee>
<EmpDetails>
<Name>huff</Name>
</EmpDetails>
</Employee>
以上XML在DB2中的表中存储为数据类型为column(DATA)
的{{1}}。
假设表的结构是这样的:
[XML NULLABLE]
假设表中的值为: Table name: REGEVENT
Columns are: REFID (VARCHAR), APPID(VARCHAR), DATA(XML NULLABLE)
,REFID(12345)
,DATA(如上所述的Employee xml)。
现在我必须使用Xquery获取存储在DATA列中的XML中的元素值(或者任何其他方式也可以)。
我正在尝试以下查询,但我将值EmpName设为NULL。
APPID(54321)
答案 0 :(得分:0)
我无法使用XQUERY获取值,但首先,我将“DATA”列的值作为String,然后使用以下方法(使用Xpath)获取节点“Name”的值。 / p>
public String getEmpNameFromEmployee(String employeeXml)
throws SAXException, IOException, XPathExpressionException {
DocumentBuilderFactory builderFactory = DocumentBuilderFactory
.newInstance();
DocumentBuilder builder = null;
try {
builder = builderFactory.newDocumentBuilder();
} catch (ParserConfigurationException e) {
e.printStackTrace();
}
Document xmlDocument = builder.parse(new ByteArrayInputStream(employeeXml
.getBytes()));
XPath xPath = (XPath) XPathFactory.newInstance().newXPath();
String expression = "/Employee/EmpDetails/Name";
String empName = xPath.compile(expression).evaluate(
xmlDocument);
return empName;