db2 如何在SQL中使用XMLPARSE阅读XML时跳过XML中的特殊字符

368yc8dk  于 2023-05-06  发布在  DB2
关注(0)|答案(1)|浏览(301)

我正在尝试解析XML以阅读一些特殊节点。然而,其中一个节点具有包含所有类型的特殊字符(包括&、〈、〉、&等)的用户注解。我无法编辑XML。
当我使用REPLACE删除其中一些时,'〈'和'〉'与节点分隔符发生冲突。
Maven们有什么建议吗?也许有一些可能的解决方案。请注意,我是一个新手,所以详细的指导将不胜感激。
1.替换所有特殊字符,包括'〈'和'〉'
1.跳过阅读任何特殊字符
1.限制我读取的数据。注解节点在XML中很低的位置,因为我只需要XML CLOB的顶部。如果有一种方法可以将XMLPARSE限制在一定数量的字符内,那么这是可行的,但不是理想的解决方案
1.使用另一个函数代替XMLPARSE。
下面是我的脚本的样子:

SELECT * 
FROM TRANSACTION_DATA_TABLE tdt, trxData,
XMLTABLE
('$d/*:Request/*:AppData' PASSING XMLPARSE(DOCUMENT REPLACE(tdt.TRAN_DATA, '&', '') AS "d"
COLUMNS
FNAME CHAR(20) PATH '*:FirstName',
LNAME CHAR(20) PATH '*:LastName'
)

TIA。

nhhxz33t

nhhxz33t1#

提供DDL和DML确实会有帮助,这样就可以完全处理这个问题,但这里有一些东西可能会有所帮助。你也可以在你的问题上添油加醋。
下面是一个简单的示例,说明如何返回所需的XML元素,然后从这些元素中删除一些字符-对于DB2:

CREATE TABLE TRANSACTION_DATA_TABLE (
  ID INTEGER,
  TRAN_DATA XML
);
INSERT INTO TRANSACTION_DATA_TABLE (ID, TRAN_DATA) VALUES (
  1,
  XMLPARSE(DOCUMENT '<TransactionData>
              <Request>
                <AppData>
                  <FirstName>John & Freddy</FirstName>
                  <LastName>Doe</LastName>
                </AppData>
              </Request>
            </TransactionData>' PRESERVE WHITESPACE)
);
SELECT tdt.ID,
       TRANSLATE(d.FirstName, '', '&<>') AS FirstName,
       TRANSLATE(d.LastName, '', '&<>') AS LastName
FROM TRANSACTION_DATA_TABLE tdt,
     XMLTABLE('/TransactionData/Request/AppData'
              PASSING tdt.TRAN_DATA
              COLUMNS
                FirstName VARCHAR(200) PATH 'FirstName',
                LastName VARCHAR(200) PATH 'LastName') as d;
ID名字联系方式
1约翰·弗雷迪多伊

DB2 fiddle
或者. use regex_replace?

SELECT tdt.ID,
       REGEXP_REPLACE(d.FirstName, '[&<>]', '') AS FirstName,
       REGEXP_REPLACE(d.LastName, '[&<>]', '') AS LastName
FROM TRANSACTION_DATA_TABLE tdt,
     XMLTABLE('/TransactionData/Request/AppData'
              PASSING tdt.TRAN_DATA
              COLUMNS
                FirstName VARCHAR2(200) PATH 'FirstName',
                LastName VARCHAR2(200) PATH 'LastName') as d;

Oracle fiddle(因为我不确定这是哪个db)

相关问题