Java XMLType 文件修改

标签 java xml database oracle xmltype

我将 Oracle DB 中的 XMLType 文件加载到 Java 应用程序中。我准备了一个类来处理 XML 文件上的操作,如下所示:

public class XMLDoc {
private OraclePreparedStatement stmt;
private ResultSet rset;
private OracleResultSet orset;
private Document xml_column;
private XMLType poxml;

public XMLDoc(Connection con, String Query) throws Exception {
    setStmt((OraclePreparedStatement)
            con.prepareStatement(Query));
    setRset(getStmt().executeQuery());
    setOrset((OracleResultSet) rset);
}}

在主程序中,我连接到数据库并将 XML 文件读入 xml_column:

Connection con = DriverManager.getConnection(host, username, password);
tables[5] = (new XMLDoc(con, "SELECT p.PENALITESXML FROM PENALITES p WHERE id_order='"+data.getIdOrder()+"'"));
while(tables[5].getOrset().next()) {
            tables[5].setPoxml(XMLType.createXML(tables[5].getOrset().getOPAQUE("PENALITESXML")));
            tables[5].setXml_column((Document)tables[5].getPoxml().getDocument());
            Element element = tables[5].getXml_column().getDocumentElement();}

现在,我想修改加载的 XML 文档,因此我执行:

tables[5].getXml_column().getElementsByTagName("ISPAID").item(0).getChildNodes().item(0).setNodeValue("Y");

但是文档没有更新。我做错了什么?

XML 文件如下所示:

<PENALITES ID_ORDER="50000">
    <PENALTY_AMOUNT>100</PENALTY_AMOUNT>
    <ISPAID>N</ISPAID>
</PENALITIES> 

最佳答案

您可以在发送到 Oracle 的 SQL 中非常简单地完成所有替换:

Connection con = DriverManager.getConnection(host, username, password);
tables[5] = new XMLDoc(
  con,
  "SELECT UPDATEXML( XMLType( PENALITESXML ), '/PENALTIES/ISPAID/text()', 'Y' ).getStringVal()"
  + " AS PENALTIESXML"
  + " FROM PENALITES"
  + " WHERE id_order='"+data.getIdOrder()+"'"
);

您还应该考虑在准备好的语句中使用绑定(bind)变量。

关于Java XMLType 文件修改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41593092/

相关文章:

java - PostgreSQL 映射 UDT

xml - Perl XML::LibXML $node->findnodes($xpath) 找到它不应该找到的节点

sql-server - 关系数据库设计 - 用户最喜欢的数据库设计

sql-server - 当分配的空间阻止您更改 Azure SQL 数据库层时,最好的方法是什么?

mysql - 在 GROUP BY() 之后过滤数据,反之亦然?

java - 我想使用 Java 获取我的 Android 设备的内部版本号、Android 版本。我使用以下代码:

java - 坚持为每个 sendMessage 授予权限

java - Spring JPA - 方法 "getById"不工作,我得到 null

java - 圆形布局 : Cannot resolve method onCreate(android. os.Bundle)

xml - 通过 VBA 将 XML 加载到 Excel