- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我正在尝试通过 pl sql 解析 xml 文件。有一个标题部分 (GrpHdr),其中包含一个应该插入到特定表中的 Id 元素及其详细信息 (Ntfctn),其元素将被插入到另一个表中,外键是第一个表的 ID。该文件如下:
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<DMCTfh:DIASMCTFH xmlns:DMCTfh="urn:DMCTfh:xsd:$DIASMCTFH">
<DMCTfh:DIASFileHdr>
<DMCTfh:SndgInst>DIASGRA1</DMCTfh:SndgInst>
<DMCTfh:RcvgInst>90874</DMCTfh:RcvgInst>
<DMCTfh:FileRef>0252013352000001</DMCTfh:FileRef>
<DMCTfh:SrvcID>DCT</DMCTfh:SrvcID>
<DMCTfh:TstCode>T</DMCTfh:TstCode>
<DMCTfh:FType>XCT</DMCTfh:FType>
<DMCTfh:NumGrp>1</DMCTfh:NumGrp>
</DMCTfh:DIASFileHdr>
<DMCTfh:BkToCstmrDbtCdtNtfctn xmlns="urn:iso:std:iso:20022:tech:xsd:camt.054.001.03">
<GrpHdr>
<MsgId>024201335200000000000132</MsgId>
<CreDtTm>2013-05-24T09:35:10</CreDtTm>
<MsgRcpt>
<Id>
<OrgId>
<Othr>
<Id>90874</Id>
<Issr>DIAS</Issr>
</Othr>
</OrgId>
</Id>
</MsgRcpt>
</GrpHdr>
<Ntfctn>
<Id>024201335200000000000129</Id>
<CreDtTm>2013-05-24T09:35:10</CreDtTm>
<Acct>
<Id>
<IBAN>GR6302602320000590200493673</IBAN>
</Id>
<Svcr>
<FinInstnId>
<BICFI>ERBKGRAA</BICFI>
</FinInstnId>
</Svcr>
</Acct>
<TxsSummry>
<TtlNtries>
<NbOfNtries>1</NbOfNtries>
</TtlNtries>
</TxsSummry>
<Ntry>
<Amt Ccy="EUR">100.00</Amt>
<CdtDbtInd>CRDT</CdtDbtInd>
<Sts>BOOK</Sts>
<ValDt>
<Dt>2013-05-24</Dt>
</ValDt>
<BkTxCd>
<Domn>
<Cd>PMNT</Cd>
<Fmly>
<Cd>CNTR</Cd>
<SubFmlyCd>CDPT</SubFmlyCd>
</Fmly>
</Domn>
</BkTxCd>
<NtryDtls>
<Btch>
<NbOfTxs>1</NbOfTxs>
<TtlAmt Ccy="EUR">100.00</TtlAmt>
</Btch>
<TxDtls>
<Refs>
<InstrId>01913351000006</InstrId>
<EndToEndId>NOTPROVIDED</EndToEndId>
<TxId>CRED-874-0208-2</TxId>
</Refs>
<Amt Ccy="EUR">100.00</Amt>
<CdtDbtInd>CRDT</CdtDbtInd>
<RltdPties>
<Dbtr>
<Nm>Debtor-NAME-301-01-1</Nm>
</Dbtr>
</RltdPties>
<RltdAgts>
<DbtrAgt>
<FinInstnId>
<BICFI>ETHNGRAA</BICFI>
</FinInstnId>
</DbtrAgt>
</RltdAgts>
<RmtInf>
<Ustrd>00000042280000087428</Ustrd>
</RmtInf>
<RltdDts>
<AccptncDtTm>2013-05-24T00:00:00</AccptncDtTm>
</RltdDts>
</TxDtls>
</NtryDtls>
</Ntry>
</Ntfctn>
<Ntfctn>
<Id>024201335200000000000130</Id>
<CreDtTm>2013-05-24T09:35:10</CreDtTm>
<Acct>
<Id>
<IBAN>GR7301723510005351020742556</IBAN>
</Id>
<Svcr>
<FinInstnId>
<BICFI>PIRBGRAA</BICFI>
</FinInstnId>
</Svcr>
</Acct>
<TxsSummry>
<TtlNtries>
<NbOfNtries>1</NbOfNtries>
</TtlNtries>
</TxsSummry>
<Ntry>
<Amt Ccy="EUR">100.00</Amt>
<CdtDbtInd>CRDT</CdtDbtInd>
<Sts>BOOK</Sts>
<ValDt>
<Dt>2013-05-24</Dt>
</ValDt>
<BkTxCd>
<Domn>
<Cd>PMNT</Cd>
<Fmly>
<Cd>RCDT</Cd>
<SubFmlyCd>ESCT</SubFmlyCd>
</Fmly>
</Domn>
</BkTxCd>
<NtryDtls>
<Btch>
<NbOfTxs>1</NbOfTxs>
<TtlAmt Ccy="EUR">100.00</TtlAmt>
</Btch>
<TxDtls>
<Refs>
<InstrId>01913351000003</InstrId>
<EndToEndId>NOTPROVIDED</EndToEndId>
<TxId>DD087401305240001</TxId>
</Refs>
<Amt Ccy="EUR">100.00</Amt>
<CdtDbtInd>CRDT</CdtDbtInd>
<RltdPties>
<Dbtr>
<Nm>ΔΕΛΗΑΝΤΩΝΗ ΜΑΡΙΑ</Nm>
</Dbtr>
</RltdPties>
<RltdAgts>
<DbtrAgt>
<FinInstnId>
<BICFI>GPSBGRAA</BICFI>
</FinInstnId>
</DbtrAgt>
</RltdAgts>
<RmtInf>
<Ustrd>00000047780000087424</Ustrd>
</RmtInf>
<RltdDts>
<AccptncDtTm>2013-05-24T00:00:00</AccptncDtTm>
</RltdDts>
</TxDtls>
</NtryDtls>
</Ntry>
</Ntfctn>
<Ntfctn>
<Id>024201335200000000000131</Id>
<CreDtTm>2013-05-24T09:35:10</CreDtTm>
<Acct>
<Id>
<IBAN>GR9801100400000004050700154</IBAN>
</Id>
<Svcr>
<FinInstnId>
<BICFI>ETHNGRAA</BICFI>
</FinInstnId>
</Svcr>
</Acct>
<TxsSummry>
<TtlNtries>
<NbOfNtries>1</NbOfNtries>
</TtlNtries>
</TxsSummry>
<Ntry>
<Amt Ccy="EUR">600.00</Amt>
<CdtDbtInd>CRDT</CdtDbtInd>
<Sts>BOOK</Sts>
<ValDt>
<Dt>2013-05-24</Dt>
</ValDt>
<BkTxCd>
<Domn>
<Cd>PMNT</Cd>
<Fmly>
<Cd>CNTR</Cd>
<SubFmlyCd>CDPT</SubFmlyCd>
</Fmly>
</Domn>
</BkTxCd>
<NtryDtls>
<Btch>
<NbOfTxs>2</NbOfTxs>
<TtlAmt Ccy="EUR">600.00</TtlAmt>
</Btch>
<TxDtls>
<Refs>
<InstrId>01913351000001</InstrId>
<EndToEndId>NOTPROVIDED</EndToEndId>
<TxId>CRED-874-0208-1</TxId>
</Refs>
<Amt Ccy="EUR">100.00</Amt>
<CdtDbtInd>CRDT</CdtDbtInd>
<RltdPties>
<Dbtr>
<Nm>Debtor-NAME-301-01-1</Nm>
</Dbtr>
</RltdPties>
<RltdAgts>
<DbtrAgt>
<FinInstnId>
<BICFI>CRBAGRAA</BICFI>
</FinInstnId>
</DbtrAgt>
</RltdAgts>
<RmtInf>
<Ustrd>00000042270000087428</Ustrd>
</RmtInf>
<RltdDts>
<AccptncDtTm>2013-05-24T00:00:00</AccptncDtTm>
</RltdDts>
</TxDtls>
<TxDtls>
<Refs>
<InstrId>01913352000001</InstrId>
<EndToEndId>3121990500874553</EndToEndId>
<TxId>61229720000000291396</TxId>
</Refs>
<Amt Ccy="EUR">500.00</Amt>
<CdtDbtInd>CRDT</CdtDbtInd>
<RltdPties>
<Dbtr>
<Nm>ΠΑΠΑΙΟΡΔΑΝΟΥ ΠΑΥΛΟΣ</Nm>
</Dbtr>
</RltdPties>
<RltdAgts>
<DbtrAgt>
<FinInstnId>
<BICFI>CITIGRAA</BICFI>
</FinInstnId>
</DbtrAgt>
</RltdAgts>
<RmtInf>
<Ustrd>00000042270000087428</Ustrd>
</RmtInf>
<RltdDts>
<AccptncDtTm>2013-05-22T00:00:00</AccptncDtTm>
</RltdDts>
</TxDtls>
</NtryDtls>
</Ntry>
</Ntfctn>
</DMCTfh:BkToCstmrDbtCdtNtfctn>
</DMCTfh:DIASMCTFH>
我是新手,它是一个精心设计的文件,所以我不确定该怎么做,尽管我浏览了一些看起来与我自己相似的帖子。任何帮助将不胜感激。
到目前为止我得到了这个:
DECLARE
xmlClob CLOB;
xmlFile BFILE;
x XMLType;
src_offset number := 1 ;
dest_offset number := 1 ;
lang_ctx number := DBMS_LOB.DEFAULT_LANG_CTX;
warning integer;
BEGIN
xmlFile := BFILENAME('Parse_XML', 'DCT9087413052401.XOO');
DBMS_LOB.CREATETEMPORARY(xmlClob, true);
DBMS_LOB.FILEOPEN(xmlFile, DBMS_LOB.FILE_READONLY);
DBMS_LOB.LOADCLOBFROMFILE(xmlClob, xmlFile, DBMS_LOB.LOBMAXSIZE, src_offset,
dest_offset, DBMS_LOB.DEFAULT_CSID, lang_ctx, warning);
x := XMLType.createXML(xmlClob);
DBMS_LOB.FILECLOSEALL();
DBMS_LOB.FREETEMPORARY(xmlClob);
FOR r IN (
SELECT ExtractValue(Value(p),'/Ntfctn/Id/text()') as Ident
,ExtractValue(Value(p),'/Ntfctn/CreDtTm/text()') as Creation_Dt
,ExtractValue(Value(p),'/Ntfctn/Acct/Id/IBAN/text()') as IBAN
,ExtractValue(Value(p),'/Ntfctn/Acct/Svcr/FinInstnId/BICFI/text()') as BIC
,ExtractValue(Value(p),'/Ntfctn/TxsSummry/TtlNtries/NbOfNtries/text()') as Entries_No
,ExtractValue(Value(p),'/Ntfctn/Ntry/Amt/text()') as Entry_Amnt
,ExtractValue(Value(p),'/Ntfctn/Ntry/CdtDbtInd/text()') as Entry_Ind
,ExtractValue(Value(p),'/Ntfctn/Ntry/Sts/text()') as Entry_Status
,ExtractValue(Value(p),'/Ntfctn/Ntry/Sts/ValDt/Dt/text()') as Val_Dt
,ExtractValue(Value(p),'/Ntfctn/Ntry/BkTxCd/Domn/Cd/text()') as Cd
,ExtractValue(Value(p),'/Ntfctn/Ntry/BkTxCd/Domn/Fmly/Cd/text()') as Fmly_Cd
,ExtractValue(Value(p),'/Ntfctn/Ntry/BkTxCd/Domn/Fmly/SubFmlyCd/text()') as Subfmly_Cd
,ExtractValue(Value(p),'/Ntfctn/Ntry/NtryDtls/Btch/NbOfTxs/text()') as Trx_Cnt
,ExtractValue(Value(p),'/Ntfctn/Ntry/NtryDtls/Btch/TtlAmt/text()') as Ttl_Amnt
,ExtractValue(Value(p),'/Ntfctn/Ntry/NtryDtls/TxDtls/Refs/InstrId/text()') as Instr_Id
,ExtractValue(Value(p),'/Ntfctn/Ntry/NtryDtls/TxDtls/Refs/EndToEndId/text()') as End_Id
,ExtractValue(Value(p),'/Ntfctn/Ntry/NtryDtls/TxDtls/Refs/TxId/text()') as Trx_Id
,ExtractValue(Value(p),'/Ntfctn/Ntry/NtryDtls/TxDtls/Amt/text()') as Dtls_Amnt
,ExtractValue(Value(p),'/Ntfctn/Ntry/NtryDtls/TxDtls/CdtDbtInd/text()') as Dtls_Ind
,ExtractValue(Value(p),'/Ntfctn/Ntry/NtryDtls/TxDtls/RltdPties/Dbtr/Nm/text()') as Dbtor_Name
,ExtractValue(Value(p),'/Ntfctn/Ntry/NtryDtls/TxDtls/RltdAgts/DbtrAgt/FinInstnId/BICFI/text()') as Inst_BIC
,ExtractValue(Value(p),'/Ntfctn/Ntry/NtryDtls/TxDtls/RmtInf/Ustrd/text()') as Ustrd
,ExtractValue(Value(p),'/Ntfctn/Ntry/NtryDtls/TxDtls/RltdDts/AccptncDtTm/text()') as Accept_Dt
FROM TABLE(XMLSequence(Extract(x,'/Ntfctn'))) p
WHERE ExtractValue(Value(p),'/Ntfctn/text()') = 'CUZK'
) LOOP
INSERT INTO DIAS_INCOMING_DT (FK_FILE_ID, ID_ORDER, DIAS_IDENTITY, BANK_IDENTITY, ORDER_IDENTITY, AMOUNT, CURRENCY, DEBITOR_NAME, BIC_DB_BANK,
BIC_IDENTITY, REMITTANCE_INFO, BANK_ACCEPT_DATE, MESSAGE_IDENTITY, MESSAGE_DATE, TRX_DATE, COMMENTS, ACCOUNT_NUMBER,
MOVEMENT_ID, PRS_STATUS, PRS_TMSTAMP, PRS_ERROR, FK_FILE_ID)
VALUES (1, trim(r.End_Id), trim(r.Ident), trim(r.IBAN), trim(r.Ustrd), to_number(r.Entry_Amnt), 'EUR', trim(r.Dbtor_Name), '1',
'1', '1', to_date(trim(r.Accept_Dt), 'YYYYMMDDHH24MISS'), trim(r.Trx_Id), to_date(trim(r.Val_Dt), 'YYYYMMDDHH24MISS'),
to_date(trim(r.Val_Dt), 'YYYYMMDDHH24MISS'), '1', 1, 1, 1, to_date(trim(r.Creation_Dt), 'YYYYMMDDHH24MISS'), 'no_error', '1');
commit;
END LOOP;
END;
最佳答案
您可以使用 XMLTABLE 函数从 XML 中提取行。作为测试,我创建了一个名为“text”的表,其中有一列名为“xmldata”。
然后,您可以像这样从 XML 文档中查询数据:
select header.id, data.*
from test, xmltable(-- GrpHdr as table
xmlnamespaces(default 'urn:iso:std:iso:20022:tech:xsd:camt.054.001.03', 'urn:DMCTfh:xsd:$DIASMCTFH' as "DMCTfh" ),
'/DMCTfh:DIASMCTFH/DMCTfh:BkToCstmrDbtCdtNtfctn/GrpHdr'
passing test.xmldata
columns id varchar2(50) path 'MsgRcpt/Id/OrgId/Othr/Id'
) as header,
xmltable(-- Ntfctn as table
xmlnamespaces(default 'urn:iso:std:iso:20022:tech:xsd:camt.054.001.03', 'urn:DMCTfh:xsd:$DIASMCTFH' as "DMCTfh" ),
'/DMCTfh:DIASMCTFH/DMCTfh:BkToCstmrDbtCdtNtfctn/Ntfctn'
passing test.xmldata
columns iban varchar2(50) path 'Acct/Id/IBAN',
dt varchar2(50) path 'Ntry/ValDt/Dt' -- and so on
) as data;
关于sql - 使用 pl sql 将 xml 文件解析为 2 个 oracle header-detail 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31940312/
我在网上搜索但没有找到任何合适的文章解释如何使用 javascript 使用 WCF 服务,尤其是 WebScriptEndpoint。 任何人都可以对此给出任何指导吗? 谢谢 最佳答案 这是一篇关于
我正在编写一个将运行 Linux 命令的 C 程序,例如: cat/etc/passwd | grep 列表 |剪切-c 1-5 我没有任何结果 *这里 parent 等待第一个 child (chi
所以我正在尝试处理文件上传,然后将该文件作为二进制文件存储到数据库中。在我存储它之后,我尝试在给定的 URL 上提供文件。我似乎找不到适合这里的方法。我需要使用数据库,因为我使用 Google 应用引
我正在尝试制作一个宏,将下面的公式添加到单元格中,然后将其拖到整个列中并在 H 列中复制相同的公式 我想在 F 和 H 列中输入公式的数据 Range("F1").formula = "=IF(ISE
问题类似于this one ,但我想使用 OperatorPrecedenceParser 解析带有函数应用程序的表达式在 FParsec . 这是我的 AST: type Expression =
我想通过使用 sequelize 和 node.js 将这个查询更改为代码取决于在哪里 select COUNT(gender) as genderCount from customers where
我正在使用GNU bash,版本5.0.3(1)-发行版(x86_64-pc-linux-gnu),我想知道为什么简单的赋值语句会出现语法错误: #/bin/bash var1=/tmp
这里,为什么我的代码在 IE 中不起作用。我的代码适用于所有浏览器。没有问题。但是当我在 IE 上运行我的项目时,它发现错误。 而且我的 jquery 类和 insertadjacentHTMl 也不
我正在尝试更改标签的innerHTML。我无权访问该表单,因此无法编辑 HTML。标签具有的唯一标识符是“for”属性。 这是输入和标签的结构:
我有一个页面,我可以在其中返回用户帖子,可以使用一些 jquery 代码对这些帖子进行即时评论,在发布新评论后,我在帖子下插入新评论以及删除 按钮。问题是 Delete 按钮在新插入的元素上不起作用,
我有一个大约有 20 列的“管道分隔”文件。我只想使用 sha1sum 散列第一列,它是一个数字,如帐号,并按原样返回其余列。 使用 awk 或 sed 执行此操作的最佳方法是什么? Accounti
我需要将以下内容插入到我的表中...我的用户表有五列 id、用户名、密码、名称、条目。 (我还没有提交任何东西到条目中,我稍后会使用 php 来做)但由于某种原因我不断收到这个错误:#1054 - U
所以我试图有一个输入字段,我可以在其中输入任何字符,但然后将输入的值小写,删除任何非字母数字字符,留下“。”而不是空格。 例如,如果我输入: 地球的 70% 是水,-!*#$^^ & 30% 土地 输
我正在尝试做一些我认为非常简单的事情,但出于某种原因我没有得到想要的结果?我是 javascript 的新手,但对 java 有经验,所以我相信我没有使用某种正确的规则。 这是一个获取输入值、检查选择
我想使用 angularjs 从 mysql 数据库加载数据。 这就是应用程序的工作原理;用户登录,他们的用户名存储在 cookie 中。该用户名显示在主页上 我想获取这个值并通过 angularjs
我正在使用 autoLayout,我想在 UITableViewCell 上放置一个 UIlabel,它应该始终位于单元格的右侧和右侧的中心。 这就是我想要实现的目标 所以在这里你可以看到我正在谈论的
我需要与 MySql 等效的 elasticsearch 查询。我的 sql 查询: SELECT DISTINCT t.product_id AS id FROM tbl_sup_price t
我正在实现代码以使用 JSON。 func setup() { if let flickrURL = NSURL(string: "https://api.flickr.com/
我尝试使用for循环声明变量,然后测试cols和rols是否相同。如果是,它将运行递归函数。但是,我在 javascript 中执行 do 时遇到问题。有人可以帮忙吗? 现在,在比较 col.1 和
我举了一个我正在处理的问题的简短示例。 HTML代码: 1 2 3 CSS 代码: .BB a:hover{ color: #000; } .BB > li:after {
我是一名优秀的程序员,十分优秀!