Xquery从XML中获取特定元素的值,该XML在DB2中存储为[XML Nullable column]

时间:2014-01-13 08:47:00

标签: java xml db2 xquery-sql

考虑以下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)

1 个答案:

答案 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;