There is a xml parser written in pl/sql
Hi everybody,
We know xml parser for pl/sql is based on xml parser for java, that is, we need the Jsever running. However, Jserver needs 60-80 MB of memory and initially we don't need Jserver, except for xml parsing. Then:
There is a xml parser written in pure pl/sql ?.
Thanks for your help!
Jairo.
PL/SQL is not sufficient to write for XML Parsing. The implementation is either in C or in Java.
If you use Oracle9i, you can take use of XMLType for the C-based XML Parser.
Similar Messages
-
XML Parsing error in PL/SQL
Hello,
I have some problem in parsing Mircrosoft OpenXML file using Oracle 10g Release2 XML Parser for PL/SQL.
I use dbms_xmlparser, dbms_xmldom, dbms_xslprocessor packages
OpenXML file use "w:" as namespace, so every element has prefix "w:" like
<w:wordDocument ..>
<w:body..>
<w:p..>
<w:r..>
<w:t..>
My job is to read OpenXML file inside PL/SQL code, parse it, and load it into the corresponding table.
Here is my PL/SQL code.
DECLARE
doc dbms_xmldom.DOMDocument;
node_list dbms_xmldom.DOMNodeList;
l_node dbms_xmldom.DOMNode;
one_element dbms_xmldom.DOMElement;
PROCEDURE p (msg VARCHAR2, nl BOOLEAN := TRUE) IS
BEGIN
dbms_output.put_line (msg);
IF nl THEN dbms_output.put(CHR(10)); END IF;
END:
BEGIN
doc := xml.parse(BFileName('XML_DIR','OpenXMLFile.xml'));
node_list := xpath.selectNodes(doc, '/w:wordDocument/w:body/w:p/w:r/w:t');
FOR j IN 0..dbms_xmldom.getLength(node_list)-1
LOOP
p( xpath.valueOf(dbms_xmldom.item(node_list, j), '.'), nl=>FALSE );
END LOOP;
Here is the error message.
ERROR at line 1:
ORA-31011: XML parsing failed
ORA-19202: Error occurred in XML processing
LPX-00601: Invalid token in: '/w:wordDocument/w:body/w:p/w:r/w:t
[starts-with(., "!")]'
ORA-06512: at "XDB.DBMS_XSLPROCESSOR", line 900
ORA-06512: at "XDB.DBMS_XSLPROCESSOR", line 928
ORA-06512: at "SYSTEM.XPATH", line 173
ORA-06512: at "SYSTEM.XPATH", line 179
ORA-06512: at line 38
I really don't know why I got this error message nor how to solve it. If I remove "w:" manually within open xml file, then parsing works well. I guess XML parser for PL/SQL doesn't recognize ":" or maybe doesn't support namespace?
My question is
1. In oracle 10g release2, XML Parser for PL/SQL can recognize ":" in the element name? or does it support namespace? If not, is there any workaround for solving this problem?
2. How can I make XML Parser recognize ":" in the element name in the xml file or How can I declare namespace in the PL/SQL code so that PL/SQL xml parser can recognize namespace like "w:"?
In fact, I don't use XML DB and what I want to do is just to load XML file into the relational table and some parts of whole XML file will be inserted into the CLOB in the table.
Should I really use XML DB to do the above job?
Any comment or suggestions will be greatly appreciated.This works correctly. I added prefixes to your extract path. (I had to add the xmlns:xsi to your root node also.)
declare
-- Local variables here
doc_in dbms_xmldom.DOMDocument;
aNodeList dbms_xmldom.DOMNodeList;
begin
-- Test statements here
doc_in := dbms_xmldom.newdomdocument(
'<?xml version="1.0" encoding="UTF-8"?>' ||
'<ap:Collection xmlns:ap="http://www.abc.com/ap" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.abc.com/ap template.xsd"> ' ||
'<ap:info>' ||
'<ap:data name="Barbie" age="3">' ||
'</ap:data>' ||
'</ap:info>' ||
'</ap:Collection>');
aNodeList := dbms_xslprocessor.selectNodes(dbms_xmldom.makeNode(doc_in),
'/ap:Collection/ap:info',
'xmlns:ap="http://www.abc.com/ap"');
dbms_output.put_line('length of aNodeList = '|| dbms_xmldom.getLength(aNodeList) );
end; -
Generic XML Parser for PL/SQL
Is there a generic XML parser written in PL/SQL that does not
rely on java that will run against a 7.3.4 database?
If please let me know where I can locate it.
Thanks,
Tim
nullTim (guest) wrote:
: Is there a generic XML parser written in PL/SQL that does not
: rely on java that will run against a 7.3.4 database?
: If please let me know where I can locate it.
: Thanks,
: Tim
There is not one currently but there are plans to provide the
PL/SQL one on top of our C version. You can also check out the
PLXML Utilities that have a limited version.
Oracle XML Team
http://technet.oracle.com
Oracle Technology Network
null -
Xml parser v2.0.2.9
We are in the beginning stages of our Oracle XML Gateway project and have made no customizations to out-of-the-box expected functionality of XML gateway product. Currently using Oracle 11.5.7 and RDBMS 8.1.7.3.0
when running ecxver.sql, results indicated that there were invalid XML parser objects and that it needed to be reinstalled using patch 2199206.
We downloaded the patch but our SysAdmin needs specific instructions on how to go about applying the patch (evidently it is just file replacement and she needs specific instructions) Our SysAdmin can't find any documentation about the XML parser v2.0.2.9 and installation of that patch.
Am I correct in assuming that we actually need to run a sql script to LOAD the parser from the XDK library? If so, could someone please point us in the right direction?
Your help is greatly appreciated!
Meg HansonPlease send the TAR name to me.
-
Hello,
I was wondering if anybody had any experience in regards to the relative performance (i.e., speed) of the different Java XML parsers out there. Specifically,
javax.xml.parsers.DocumentBuilder.parse() vs. any others.
My goal is to reduce the amount of time needed to parse ~1000 XML files (avg size 3kb) and I have done some tests that lead me to conclude that the rate-limiting step is not the file i/o (surprisingly).
Is there any particular XML parser that people favor?
Thanks,
cklI have created a parser with interesting performance result with
files < 100 Ko at http://www.japisoft.com/fastparser
Regards,
A.Brillant -
XMLElement cause ORA-31011: XML parsing failed
Hi,
already simple examples,
e.g. like descibed in tech articles 'SQL in,XML out',
cause always error 31011.
What is wrong?
Is something missing in my installation?
Worng version?
SQL> select xmlelement("KUNDEID",KUNDEID) from DSL_KUNDE;
ERROR:
ORA-31011: XML parsing failed
But normal SQL works fine and data is available:
SQL> select kundeid from dsl_kunde;
KUNDEID
1
2
3
Here is the SQL*Plus login message
SQL*Plus: Release 9.2.0.1.0 - Production on Mi Nov 12 17:14:42 2003
Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.
Connected to:
Oracle9i Enterprise Edition Release 9.2.0.4.0 - 64bit Production
With the Partitioning, OLAP and Oracle Data Mining options
JServer Release 9.2.0.4.0 - ProductionPlease post this message at:
Forums Home » Oracle Technology Network (OTN) » Products » Database » XML DB -
I used to use SpeedBit Video Downloader with Mozilla Firefox, but suddenly a problem happened, I can not download with it now at all as there is an code error appears in the bar of SpeedBit like "XML Parsing Error: unclosed token Location: chrome://browser/content/browser.xul Line Number 1, column 8702:....................."
I did evrey thing, but the same problem
reinstall SpeedBit, reinstall Mozilla Firefox.
So what can I do!
== This happened ==
Every time Firefox opened
== 4 days agolook people, i may have a solution for this. This happened to me a few times before and resolved alone, but last time it happened was when i turned off my router and back on while my comp was running and appeared when i tried opening firefox after that. so wat i did was i shutdown the computer and the router and tried turning both on again, and it resolved.
Therefore, Summary: Shutdown computer then turnoff router then turn both back on
Hope this helps anyone. -
Why the oracle XML parser "parses" the DTD comments?
Hi all,
I always use the header
<?xml version = '1.0' encoding='ISO-8859-1' ?>
to be able to use foreign characters in the XML documents.
The oracle xml parser handles this correctly.
My problem is, when I write comments inside the DTD, the
parser reports "Invalid UTF8 encoding".
Why the parser "parse" the comments? (protected by <!-- and -->)
How do I say that the DTD encoding is different from UTF, like
ISO-8859-1?
Example of a correct DTD and corresponding XML, reporting
problems, related to the 2nd comment in the DTD specification,
written with ISO-8859-1 characters.
The DTD:
<!-- valid.dtd -->
<!ELEMENT valid ( B, C ) >
<!-- valid represents the concept "Identificagco" -->
<!ELEMENT B (#PCDATA) >
<!ELEMENT C (#PCDATA) >
The XML:
<?xml version = '1.0' encoding='ISO-8859-1' ?>
<!DOCTYPE valid SYSTEM 'valid.dtd'>
<valid>
<B>How are you, Conceigco</B>
<C>I'm fine, thank you.</C>
</valid>
The parser output:
[jgr@frontera test-dtd]$ java oracle.xml.parser.v2.oraxml -v
valid.xml
Error while parsing input sourcevalid.xml(Invalid UTF8 encoding.)
Thank you for any help.
Jorge Gustavo RochaI was wrong in saying that the attributes are not added to the element.My main aim is to add a array of elements to the root node.
Is there a efficient manner in adding the elements , rather than adding them individually with the help of appendChild method.
Thanks in advance.
null -
Problem in XML Parsing via oracle procedure...
Hi,
I wrote one oracle procedure for xml parsing.
I have one valid xml file which has "encode UTF-8". The XML file contains some comments also. While we are parsing the xml file at that time it is not parse successfully and also it is not giving any error. After the following line it is skip rest of the codes(lines).
dbms_xmlparser.parseclob(l_parser, l_clob);
At the end of the xml file there are some comments which is like "<!-- abc --> ".
When I am changing the "encode UTF-8 to ISO-88596-1" & removing the comments which wrote on bottom of the file then its working fine, but the files which we are getting from the system is contains the encode UTF-8 and we don't want to preprocess on that xml files. Even if we will do that via shell script or perl script then it will be overhead to the system and in a single stroke our system will parse more than 5k xml files, so if we will do some preprocess on it, it will take some more time approx 1-2 minutes extra.
So, If someone knows any solution of this problem, then please guide & help me on this.
My xml file structure is as follows:-
<?xml version="1.0" encoding="UTF-8"?>
<mcd xmlns:HTML="http://www.w3.org/TR/REC-xml">
<child>
<child1>32.401 V5.5</child1>
<child2>ZoneGate</child2>
</child>
<mc>
<newid>
<id>12</id>
</newid>
<mindex>
<date>20111102180000</date>
<mt>abc1</mt>
<mt>abc2</mt>
<mvalue>
<r>val_1</r>
<r>val_2</r>
</mvalue>
</mindex>
</mc>
</mcd>
<!--
ALARM STATUS
morning 10
afternoon 14
evening 18
night 22
-->
<!--
PARAM:EID = 1
PARAM:GId = 3
PARAM:GSId = 0
--!>
And my oracle procedure is as follows:-
create or replace procedure loadXMLtotable(dir_name IN varchar2, xmlfile IN varchar2) AS
-- Defining the variables
ecode NUMBER;
emesg VARCHAR2(200);
l_bfile BFILE;
l_clob CLOB;
l_dest_offset INTEGER:=1;
l_src_offset INTEGER:=1;
l_Char_set_id NUMBER := NLS_CHARSET_ID('UTF8');
l_lang_context INTEGER := dbms_lob.default_lang_ctx;
l_warning INTEGER;
l_parser dbms_xmlparser.Parser;
l_doc dbms_xmldom.DOMDocument;
l_nl1 dbms_xmldom.DOMNodeList;
l_nl2 dbms_xmldom.DOMNodeList;
l_n dbms_xmldom.DOMNode;
node1 dbms_xmldom.DOMNode;
colid integer ; -- column id used for identifying which column it belongs.
l_xmltype XMLTYPE;
sub_xmltype XMLTYPE;
num_nodes number;
l_index PLS_INTEGER;
l_subIndex PLS_INTEGER;
starttime Date;
temp_datatime VARCHAR(25);
columnname varchar2(300);
columnvalue varchar2(300);
-- creating a Type which is a type of "test_hem" table RowType, which I created in SVN server
TYPE tab_type IS TABLE OF test_hem%ROWTYPE;
t_tab tab_type := tab_type();
BEGIN
-- Passing the xmlfile and virtual directory name which we gave at the time of directory creation
l_bfile := BFileName('MY_FILES', xmlfile);
dbms_lob.createtemporary(l_clob, cache=>FALSE);
dbms_lob.open(l_bfile, dbms_lob.lob_readonly);
--dbms_lob.loadFromFile(dest_lob => l_clob,
-- src_lob => l_bfile,
-- amount => dbms_lob.getLength(l_bfile));
dbms_lob.loadclobfromfile(l_clob, l_bfile, dbms_lob.getlength(l_bfile),
l_dest_offset, l_src_offset, l_Char_set_id, l_lang_context, l_warning);
dbms_lob.close(l_bfile);
-- make sure implicit date conversions are performed correctly
dbms_session.set_nls('NLS_DATE_FORMAT','''YYYY-MON-DD HH24:MI:SS''');
dbms_output.put_line('Date format set');
-- Create a parser.
l_parser := dbms_xmlparser.newParser;
dbms_output.put_line('output 1');
-- Parse the document and create a new DOM document.
dbms_xmlparser.parseclob(l_parser, l_clob);
dbms_output.put_line(' passed parsing');
l_doc := dbms_xmlparser.getDocument(l_parser);
dbms_output.put_line(' passed getdocument');
-- Free resources associated with the CLOB and Parser now they are no longer needed.
dbms_lob.freetemporary(l_clob);
dbms_xmlparser.freeParser(l_parser);
-- Get a list of all the EMP nodes in the document using the XPATH syntax.
l_nl1 := dbms_xslprocessor.selectNodes(dbms_xmldom.makeNode(l_doc),'//mcd/child');
-- Loop through the list and create a new record in a tble collection
FOR cur_sel IN 0 .. dbms_xmldom.getLength(l_nl1) - 1 LOOP
l_n := dbms_xmldom.item(l_nl1, cur_sel);
t_tab.extend;
-- Use XPATH syntax to assign values to he elements of the collection.
dbms_xslprocessor.valueOf(l_n,'child1/text()',t_tab(t_tab.last).country);
-- putting the state and vendorname into the table rowtype
dbms_xslprocessor.valueOf(l_n,'child2/text()',t_tab(t_tab.last).state);
END LOOP;
-- getting the version and putting into the table rowtype
l_n := dbms_xslprocessor.selectSingleNode(dbms_xmldom.makeNode(l_doc),'//mcd/mc/newid/id');
dbms_xslprocessor.valueOf(l_n,'id/text()',t_tab(t_tab.last).id);
-- selecting the nodes whose starting tag is "mindex"
l_nl1 := dbms_xslprocessor.selectNodes(dbms_xmldom.makeNode(l_doc),'//mcd/mc/mindex');
-- checking the total number of nodes whose starting through "mi"
num_nodes := dbms_xmldom.getLength(l_nl1);
l_index := 1;
-- For loop to iterate the nodes.
FOR cur_sel IN 0 .. dbms_xmldom.getLength(l_nl1) - 1 LOOP
-- whole current node is selected and storing into the node1 variable
node1 := dbms_xmldom.item(l_nl1, cur_sel);
-- setting the xmltype as AL32UTF8
l_xmltype := xmltype(l_bfile, nls_charset_id('AL32UTF8'));
-- if selecting parent node containing the mt child node then only proceed else skip that parent node.
IF (l_xmltype.Existsnode('//mcd/mc/mindex[' || l_index || ']/mt') > 0 and l_xmltype.Existsnode('//mcd/mc/mindex[' || l_index || ']/mvalue/r') > 0) Then
-- fetch the datatime, convert it into to_date format and store it into table rowtype
temp_datatime := dbms_xslprocessor.valueOf(node1, 'date/text()');
t_tab(t_tab.last).data_time := to_char(to_date(temp_datatime, 'YYYYMmcDHH24MISS'));
l_subIndex := 1;
while (l_xmltype.Existsnode('//mcd/mc/mindex[' || l_index || ']/mt[' || l_subIndex || ']') > 0 and l_xmltype.Existsnode('//mcd/mc/mindex[' || l_index || ']/mvalue/r['|| l_subIndex || ']') > 0 ) LOOP
-- getting mt and corresponging mvalue/r values
dbms_xslprocessor.valueOf(node1,'mt[' || l_subIndex || ']/text()',columnname);
dbms_xslprocessor.valueOf(node1,'mvalue/r[' || l_subIndex || ']/text()',columnvalue);
l_subIndex := l_subIndex + 1;
-- getting the column to which this mapping belongs.
select columnid into colid from abc_table where columnname=name;
CASE colid
WHEN 1 THEN t_tab(t_tab.last).col1 := columnvalue;
WHEN 2 THEN t_tab(t_tab.last).col2 := columnvalue;
WHEN 3 THEN t_tab(t_tab.last).col3 := columnvalue;
ELSE dbms_output.put_line('No column mapping for counter ' || columnname) ;
END CASE; -- end of case statement.
END LOOP;
-- Insert data into the real table from the table collection.
FORALL i IN t_tab.first .. t_tab.last
INSERT INTO test_hem VALUES t_tab(i);
END IF;
l_index := l_index + 1;
COMMIT;
END LOOP;
commit;
EXCEPTION
WHEN OTHERS THEN
ecode := SQLCODE;
emesg := SQLERRM;
dbms_output.put_line(TO_CHAR(ecode) || '-' || emesg);
dbms_lob.freetemporary(l_clob);
dbms_xmlparser.freeParser(l_parser);
dbms_xmldom.freeDocument(l_doc);
END;Sorry Odie,
I am new to this site as well as PL/SQL. I am giving additional details which you had mentioned in your last comments.
our Oracle Database version is "10.2.0.4.0"
The structure of target table Instrument_Details is as follows:
Create table Instrument_Details (
instrument_id Integer Primary Key,
provider_name Varchar2(32),
version_number Varchar2(32),
location_id Integer,
installation_date Date,
granularity Integer,
time_out Integer );
Note:- Here test_hem is alias of Instrument_details.
Here instrument_id is a primary key.
provider_name contains the child2 xml tag value.
version_number contains the child1 xml tag value.
location_id contains the newid/id value which is map to other table which fetching the location name corresponding to the location_id.
installation_date contains the date xml tag value.
Now we have created one mapping tables where we mapped the xml tag values "mt" with table column name means "abc1 = granularity", "abc2 = time_out" in that table.
these table column value are written under mvalue xml tag.
_Our Database Character set is_:-
NLS_CHARACTERSET WE8ISO8859P1
Now as you suggest me to format your code. I am writing the xml code and procedure code again.
My xml file structure is as follows:-
<?xml version="1.0" encoding="UTF-8"?>
<mcd xmlns:HTML="http://www.w3.org/TR/REC-xml">
<child>
<child1>32.401 V5.5</child1>
<child2>ZoneGate</child2>
</child>
<mc>
<newid>
<id>12</id>
</newid>
<mindex>
<date>20111102180000</date>
<mt>abc1</mt>
<mt>abc2</mt>
<mvalue>
<r>val_1</r> -- here val_1 and val_2 are numeric values
<r>val_2</r>
</mvalue>
</mindex>
</mc>
</mcd>
<!--
ALARM STATUS
morning 10
afternoon 14
evening 18
night 22
-->
<!--
PARAM:EID = 1
PARAM:GId = 3
PARAM:GSId = 0
--!> And my oracle procedure is as follows:-
create or replace procedure loadXMLtotable(dir_name IN varchar2, xmlfile IN varchar2) AS
-- Defining the variables
ecode NUMBER;
emesg VARCHAR2(200);
l_bfile BFILE;
l_clob CLOB;
l_dest_offset INTEGER:=1;
l_src_offset INTEGER:=1;
l_Char_set_id NUMBER := NLS_CHARSET_ID('UTF8');
l_lang_context INTEGER := dbms_lob.default_lang_ctx;
l_warning INTEGER;
l_parser dbms_xmlparser.Parser;
l_doc dbms_xmldom.DOMDocument;
l_nl1 dbms_xmldom.DOMNodeList;
l_nl2 dbms_xmldom.DOMNodeList;
l_n dbms_xmldom.DOMNode;
node1 dbms_xmldom.DOMNode;
colid integer ; -- column id used for identifying which column it belongs.
l_xmltype XMLTYPE;
sub_xmltype XMLTYPE;
num_nodes number;
l_index PLS_INTEGER;
l_subIndex PLS_INTEGER;
starttime Date;
temp_datatime VARCHAR(25);
columnname varchar2(300);
columnvalue varchar2(300);
-- creating a Type which is a type of "Instrument_Details" table RowType, which I created in SVN server
TYPE tab_type IS TABLE OF Instrument_Details%ROWTYPE;
t_tab tab_type := tab_type();
BEGIN
-- Passing the xmlfile and virtual directory name which we gave at the time of directory creation
l_bfile := BFileName('MY_FILES', xmlfile);
dbms_lob.createtemporary(l_clob, cache=>FALSE);
dbms_lob.open(l_bfile, dbms_lob.lob_readonly);
--dbms_lob.loadFromFile(dest_lob => l_clob,
-- src_lob => l_bfile,
-- amount => dbms_lob.getLength(l_bfile));
dbms_lob.loadclobfromfile(l_clob, l_bfile, dbms_lob.getlength(l_bfile),
l_dest_offset, l_src_offset, l_Char_set_id, l_lang_context, l_warning);
dbms_lob.close(l_bfile);
-- make sure implicit date conversions are performed correctly
dbms_session.set_nls('NLS_DATE_FORMAT','''YYYY-MON-DD HH24:MI:SS''');
dbms_output.put_line('Date format set');
-- Create a parser.
l_parser := dbms_xmlparser.newParser;
dbms_output.put_line('output 1');
-- Parse the document and create a new DOM document.
dbms_xmlparser.parseclob(l_parser, l_clob);
*-- Below lines are skipping....*
dbms_output.put_line(' passed parsing');
l_doc := dbms_xmlparser.getDocument(l_parser);
dbms_output.put_line(' passed getdocument');
-- Free resources associated with the CLOB and Parser now they are no longer needed.
dbms_lob.freetemporary(l_clob);
dbms_xmlparser.freeParser(l_parser);
-- Get a list of all the EMP nodes in the document using the XPATH syntax.
l_nl1 := dbms_xslprocessor.selectNodes(dbms_xmldom.makeNode(l_doc),'//mcd/child');
-- Loop through the list and create a new record in a tble collection
FOR cur_sel IN 0 .. dbms_xmldom.getLength(l_nl1) - 1 LOOP
l_n := dbms_xmldom.item(l_nl1, cur_sel);
t_tab.extend;
-- Use XPATH syntax to assign values to he elements of the collection.
dbms_xslprocessor.valueOf(l_n,'child1/text()',t_tab(t_tab.last).country);
-- putting the state and vendorname into the table rowtype
dbms_xslprocessor.valueOf(l_n,'child2/text()',t_tab(t_tab.last).state);
END LOOP;
-- getting the version and putting into the table rowtype
l_n := dbms_xslprocessor.selectSingleNode(dbms_xmldom.makeNode(l_doc),'//mcd/mc/newid/id');
dbms_xslprocessor.valueOf(l_n,'id/text()',t_tab(t_tab.last).id);
-- selecting the nodes whose starting tag is "mindex"
l_nl1 := dbms_xslprocessor.selectNodes(dbms_xmldom.makeNode(l_doc),'//mcd/mc/mindex');
-- checking the total number of nodes whose starting through "mi"
num_nodes := dbms_xmldom.getLength(l_nl1);
l_index := 1;
-- For loop to iterate the nodes.
FOR cur_sel IN 0 .. dbms_xmldom.getLength(l_nl1) - 1 LOOP
-- whole current node is selected and storing into the node1 variable
node1 := dbms_xmldom.item(l_nl1, cur_sel);
-- setting the xmltype as AL32UTF8
l_xmltype := xmltype(l_bfile, nls_charset_id('AL32UTF8'));
-- if selecting parent node containing the mt child node then only proceed else skip that parent node.
IF (l_xmltype.Existsnode('//mcd/mc/mindex[' || l_index || ']/mt') > 0 and l_xmltype.Existsnode('//mcd/mc/mindex[' || l_index || ']/mvalue/r') > 0) Then
-- fetch the datatime, convert it into to_date format and store it into table rowtype
temp_datatime := dbms_xslprocessor.valueOf(node1, 'date/text()');
t_tab(t_tab.last).data_time := to_char(to_date(temp_datatime, 'YYYYMmcDHH24MISS'));
l_subIndex := 1;
while (l_xmltype.Existsnode('//mcd/mc/mindex[' || l_index || ']/mt[' || l_subIndex || ']') > 0 and l_xmltype.Existsnode('//mcd/mc/mindex[' || l_index || ']/mvalue/r['|| l_subIndex || ']') > 0 ) LOOP
-- getting mt and corresponging mvalue/r values
dbms_xslprocessor.valueOf(node1,'mt[' || l_subIndex || ']/text()',columnname);
dbms_xslprocessor.valueOf(node1,'mvalue/r[' || l_subIndex || ']/text()',columnvalue);
l_subIndex := l_subIndex + 1;
-- getting the column to which this mapping belongs.
select columnid into colid from abc_table where columnname=name;
CASE colid
WHEN 1 THEN t_tab(t_tab.last).col1 := columnvalue;
WHEN 2 THEN t_tab(t_tab.last).col2 := columnvalue;
WHEN 3 THEN t_tab(t_tab.last).col3 := columnvalue;
ELSE dbms_output.put_line('No column mapping for counter ' || columnname) ;
END CASE; -- end of case statement.
END LOOP;
-- Insert data into the real table from the table collection.
FORALL i IN t_tab.first .. t_tab.last
INSERT INTO test_hem VALUES t_tab(i);
END IF;
l_index := l_index + 1;
COMMIT;
END LOOP;
commit;
EXCEPTION
WHEN OTHERS THEN
ecode := SQLCODE;
emesg := SQLERRM;
dbms_output.put_line(TO_CHAR(ecode) || '-' || emesg);
dbms_lob.freetemporary(l_clob);
dbms_xmlparser.freeParser(l_parser);
dbms_xmldom.freeDocument(l_doc);
END;Thanks in advance for your help... -
XML parsing with SQL/PL-SQL
Hi,
My question is about how can an XML message can be best parsed using SQL/PL-SQL.
The scenario is as follow. The XML message is stored in a CLOB; only some of its data needs to be extracted; there are six different types of structures of XML; the size of each XML is about 50 lines (maximum depth level is 3); the data could be written in English or Greek or French or German or Russian; this is going to be done every hour and the parsing is going to be against 3,000 records approx.
In the development, I need to take into consideration performance. We are using Oracle 10, but we could migrate to Oracle 11 if necessary.
Apologies for this basic question but I have never done XML parsing in SQL/PL-SQL before.
Thank you.
PS I have copied this question to the XML forum.
Edited by: user3112983 on May 19, 2010 3:30 PM
Edited by: user3112983 on May 19, 2010 3:39 PMuser3112983 wrote:
The scenario is as follow. The XML message is stored in a CLOB; only some of its data needs to be extracted; there are six different types of structures of XML; the size of each XML is about 50 lines (maximum depth level is 3); the data could be written in English or Greek or French or German or Russian; this is going to be done every hour and the parsing is going to be against 3,000 records approx.Parsing is done using the XMLTYPE data type (object class) in Oracle.
Something as follows:
SQL> create table xml_doc( id number, doc clob );
Table created.
SQL>
SQL> insert into xml_doc values( 1, '<root><row><name>John</name></row><row><name>Jack</name></row></root>' );
1 row created.
SQL> commit;
Commit complete.
SQL>
SQL> declare
2 rawXml xml_doc.doc%type;
3 xml xmltype;
4 begin
5 -- get the raw XML (as a CLOB)
6 select doc into rawXml from xml_doc where id = 1;
7
8 -- parse it
9 xml := new xmltype( rawXml );
10 -- process the XML...
11 end;
12 /
PL/SQL procedure successfully completed.
SQL>The variable xml in the sample code is the XML DOM object. XML functions can be used against it (e.g. to extract values in a tabular row and column structure).
Note that the CLOB needs to contain a valid XML. An XML containing XML fragments is not valid and cannot be parsed. E.g.
SQL> declare
2 xml xmltype;
3 begin
4 -- attemp to parse fragments
5 xml := new xmltype( '<row><name>John</name></row> <data><column>Name</column></data>' );
6 end;
7 /
declare
ERROR at line 1:
ORA-31011: XML parsing failed
ORA-19202: Error occurred in XML processing
LPX-00245: extra data after end of document
Error at line 1
ORA-06512: at "SYS.XMLTYPE", line 301
ORA-06512: at line 5This XML contains 2 fragments. A row structure and a data structure. It is not a valid XML and as such cannot be parsed. If a root tag is used to encapsulate these 2 fragments, then it will be a valid XML structure.
In the development, I need to take into consideration performance. We are using Oracle 10, but we could migrate to Oracle 11 if necessary.Have not run into any XML performance problems specifically - and am using it extensively. Even large XMLs (10's of 1000's of elements) parse pretty fast. -
ANN: Oracle XML Parser for Java v2.0.2
The new version of the Oracle XML Parser for Java v2 is
available for download and has the following features and
changes:
1. Conformance to the XSLT/XPATH August WD.
Note that there are several changes between April99 XSLT draft
and the August99 XSLT/Xpath draft and these changes have been
implemented in the XSL Processor. The XSL Processor has been
modified to accept XPath syntax for expressions and patterns.
Stylesheets might have to be modified to be conformant to the
August XSLT/XPath draft before they can be used with this
release.
Some of the changes between April draft and the August draft
are:
a. Expressions in the stylesheet must match the XPath
production Expr.
b. Some of the attribute names and element names in XSL
namespace have changed.
c. Some new functions have been added to XPath CORE function
library.
Please refer to the August XSLT/XPath draft for more details.
This is the first production release for v2.
Oracle XML Team
http://technet.oracle.com
Oracle Technology Network
nullThe link has been fixed. You will go to the v2 download page
now. Sorry for the inconvience.
Oracle XML Team
http://technet.oracle.com
Oracle Technology Network
Renilton Oliveira (guest) wrote:
: I didn't find the file for version 2.0.0.0 as well.
: Renilton
: Andrei Filimonov (guest) wrote:
: : I tried to download XML Parser for Java v2 it seems that
only
: v
: : 1.0.1.4 is available. Could you please give an exact URL for
: v2
: : download?
: : Andrei Filimonov
: : Oracle XML Team wrote:
: : : The Oracle XML v2 parser is now available for download
here
: as
: : : an early beta release and is written in Java. It features
: an
: : : improved architecture over the Oracle XML v1 parser and
has
: : : shown better performance on small to large XML documents.
: It
: : : will also be able to format the XML document according to
a
: : : stylesheet, having integrated an XSLT processor.
: : : Version 2 of the XML Parser for Java, besides
incorporating
: an
: : : XSLT processor, has been re-architected from version 1.
This
: : has
: : : resulted in a number of changes to the class names
: especially
: : : those that support Namespaces. See v2changes.txt and
: the .diff
: : : difference files in the sample directory.
: : : Oracle XML Team
: : : http://technet.oracle.com
: : : Oracle Technology Network
null -
Error during XML Parser Sample building.
I tried to build your sample for XML Parser for C++ v.2 for Solaris.
I had some errors :
c++ -o DOMSample -I../include DOMSample.cpp -L../lib -lxml8 -lcore8 -lnls8 -lcore8 -lnls8 -lcore8 -lnsl -lsocket
Undefined first referenced
symbol in file
Node::getFirstChild void) /var/tmp/ccxhDPf2.o
Node::getValue(void) /var/tmp/ccxhDPf2.o
Node::hasChildNodes(void) /var/tmp/ccxhDPf2.o
Node::getChildNode(unsigned int) /var/tmp/ccxhDPf2.o
Node::getName(void) /var/tmp/ccxhDPf2.o
Node::numChildNodes(void) /var/tmp/ccxhDPf2.o
Node::getType(void) /var/tmp/ccxhDPf2.o
ld: fatal: Symbol referencing errors. No output written to DOMSample
collect2: ld returned 1 exit status
make: *** [DOMSample] Error 1
I use Solaris version 2.7 and c++ (gcc)version 2.95.
I tried with the -G compilation option.(for comptability with other compilers.
It compiled but the executable doesnot run.
Please, could you give the right compilation options.
nullI think url in XML is creating problem here.
<FileLocator
url="http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?cmd=search&db=PubMed&term=23-95-0[ECNO]+OR+"~"[MH]">MEDLINE</FileLocator>
Is there any way to parse this XML using <fx:XML/> ??
Thanks. -
Error when Bursting - XML Parser expected '-- ' instead of 'EOF'.
Hi,
We're generating invoices using BI Publisher as one large XML report, then routing them to customers using the concurrent bursting program to break up the xml by customer and faxing / emailing / printing as needed.
the report seems to generate properly - here's a sample:
<?xml version="1.0"?>
<!-- Generated by Oracle Reports version 6.0.8.27.0 -->
<DWDRAXINV>
<LIST_G_ORDER_BY>
<G_ORDER_BY>
<ORDER_BY>100800</ORDER_BY>
<LIST_G_INVOICE>
<G_INVOICE>
<CUSTOMER_TRX_ID>xx</CUSTOMER_TRX_ID>
<TRX_NUMBER>100800</TRX_NUMBER>
<TRX_TYPE>INV</TRX_TYPE>
<TRX_TYPE_NAME>Invoice</TRX_TYPE_NAME>
<OPEN_RECEIVABLE_FLAG>Y</OPEN_RECEIVABLE_FLAG>
<TRX_DATE>04-APR-05</TRX_DATE>
<BILL_TO_CUSTOMER_ID>40214</BILL_TO_CUSTOMER_ID>
<BILL_TO_CONTACT_ID/>
<SHIP_TO_CUSTOMER_ID>9663</SHIP_TO_CUSTOMER_ID>
<SHIP_TO_CONTACT_ID/>
<REMIT_TO_ADDRESS_ID>1210</REMIT_TO_ADDRESS_ID>
<BILL_TO_SITE_USE_ID>245883</BILL_TO_SITE_USE_ID>
<PRIMARY_SALESREP_ID>xx</PRIMARY_SALESREP_ID>
<CUSTOMER_NUMBER>xx</CUSTOMER_NUMBER>
<INTERNAL_NOTES/>
<PREVIOUS_CUSTOMER_TRX_ID/>
<SHIP_TO_SITE_USE_ID>55369</SHIP_TO_SITE_USE_ID>
<BATCH_SOURCE_ID>1024</BATCH_SOURCE_ID>
<PRINTING_COUNT>9</PRINTING_COUNT>
<PRINTING_ORIGINAL_DATE>05-APR-05</PRINTING_ORIGINAL_DATE>
<LAST_PRINTED_SEQUENCE_NUMBER>1</LAST_PRINTED_SEQUENCE_NUMBER>
<START_DATE_COMMITMENT/>
<END_DATE_COMMITMENT/>
<INITIAL_CUSTOMER_TRX_ID/>
<INVOICE_CURRENCY_CODE>USD</INVOICE_CURRENCY_CODE>
<BILL_CUST_NAME>xx</BILL_CUST_NAME>
<BILL_ADDRESS1>xx</BILL_ADDRESS1>
<BILL_ADDRESS2>xx</BILL_ADDRESS2>
<BILL_ADDRESS3>xx</BILL_ADDRESS3>
<BILL_ADDRESS4/>
<BILL_CITY>CONCORD</BILL_CITY>
<BILL_STATE>CA</BILL_STATE>
<BILL_POSTAL_CODE>94524-xx</BILL_POSTAL_CODE>
<BILL_COUNTRY>US</BILL_COUNTRY>
<TERM_ID>1016</TERM_ID>
<PURCHASE_ORDER_REVISION/>
<PURCHASE_ORDER_DATE/>
<TRX_COMMENTS/>
<BILL_TO_LOCATION>PO BOX Q</BILL_TO_LOCATION>
<BILL_TO_ADDRESS1>PO BOX xx1</BILL_TO_ADDRESS1>
<BILL_TO_ADDRESS2>xx</BILL_TO_ADDRESS2>
<BILL_TO_ADDRESS3>10365268 / 348025</BILL_TO_ADDRESS3>
<BILL_TO_ADDRESS4/>
<BILL_TO_STATE>CA</BILL_TO_STATE>
<BILL_TO_PROVINCE/>
<LIST_G_INV_TERM>
<G_INV_TERM>
<SALES_ORDER_NUMBER>15042116</SALES_ORDER_NUMBER>
<INTERFACE_HEADER_CONTEXT>ORDER ENTRY</INTERFACE_HEADER_CONTEXT>
<PARTY_ID>43923</PARTY_ID>
<C_ACCT_ID>40214</C_ACCT_ID>
<TERM_SEQUENCE_NUMBER>1</TERM_SEQUENCE_NUMBER>
<SHIP_DATE_ACTUAL>04-APR-05</SHIP_DATE_ACTUAL>
<SHIP_VIA/>
<WAYBILL_NUMBER>0</WAYBILL_NUMBER>
<CREDIT_MEMO_TYPE_ID>1130</CREDIT_MEMO_TYPE_ID>
<BILL_TO_ADDRESS_ID/>
<TRX_ORG>509</TRX_ORG>
<PURCHASE_ORDER_NUMBER>9373872-4</PURCHASE_ORDER_NUMBER>
<TERM_DUE_DATE_FROM_PS>05-APR-05</TERM_DUE_DATE_FROM_PS>
<TRX_LINE_AMOUNT>85</TRX_LINE_AMOUNT>
<TRX_TAX_AMOUNT>0</TRX_TAX_AMOUNT>
<BILL_CUST_TAX_REFERENCE/>
<TERM_RELATIVE_AMOUNT>100</TERM_RELATIVE_AMOUNT>
<PRINTING_LAST_PRINTED>11-JAN-08</PRINTING_LAST_PRINTED>
<TRX_ALL_AMOUNT>85</TRX_ALL_AMOUNT>
<PRINTING_PENDING>N</PRINTING_PENDING>
<BILL_SITE_TAX_REFERENCE/>
<TRX_FREIGHT_AMOUNT>0</TRX_FREIGHT_AMOUNT>
<TERM_NAME>COD</TERM_NAME>
<LIST_G_LINE_TOTAL>
<G_LINE_TOTAL>
<LINE_OF_TYPE_FRT>A</LINE_OF_TYPE_FRT>
<ORDER_BY1>1</ORDER_BY1>
<LINK_TO_LINE>2445027</LINK_TO_LINE>
<DUMMY>1</DUMMY>
<LIST_G_LINES>
<G_LINES>
<LINE_ORDER>1</LINE_ORDER>
<LINE_NUMBER>1</LINE_NUMBER>
<ASSET_CREATION_CODE>43883</ASSET_CREATION_CODE>
<EQUIPMENT_TYPE>1</EQUIPMENT_TYPE>
<CONFIG_MODEL_TYPE>STANDARD</CONFIG_MODEL_TYPE>
<BUYER_ID>113851</BUYER_ID>
<UN_NUMBER_ID>433207</UN_NUMBER_ID>
<INVOICING_RULE_ID>0</INVOICING_RULE_ID>
<INVENTORY_ITEM_STATUS_CODE>TRAVEL LAB</INVENTORY_ITEM_STATUS_CODE>
<DEFAULT_SO_SOURCE_TYPE>433207</DEFAULT_SO_SOURCE_TYPE>
<CONTACT_NAME/>
<ITEM_NUMBER>TRAVEL-CA</ITEM_NUMBER>
<LINE_CUSTOMER_TRX_ID>179471</LINE_CUSTOMER_TRX_ID>
<LINE_CUSTOMER_TRX_LINE_ID>2445027</LINE_CUSTOMER_TRX_LINE_ID>
<SALES_ORDER_LINE_NUMBER>1</SALES_ORDER_LINE_NUMBER>
<LINE_CHILD_INDICATOR>0</LINE_CHILD_INDICATOR>
<LINE_TYPE>LINE</LINE_TYPE>
<LINE_ITEM_DESCRIPTION>TRAVEL LABOR - CA</LINE_ITEM_DESCRIPTION>
<LINE_QTY_ORDERED>.5</LINE_QTY_ORDERED>
<LINE_QTY_INVOICED>.5</LINE_QTY_INVOICED>
<LINE_UOM>HOUR</LINE_UOM>
<LINE_UNIT_SELLING_PRICE>68</LINE_UNIT_SELLING_PRICE>
<LINE_EXTENDED_AMOUNT>34</LINE_EXTENDED_AMOUNT>
<LINE_NET_AMOUNT>34</LINE_NET_AMOUNT>
<LINE_TAX_RATE/>
<LINE_VAT_TAX_ID>1245</LINE_VAT_TAX_ID>
<LINE_TAX_EXEMPTION_ID/>
<LINE_LOCATION_RATE_ID/>
<LINK_TO_CUST_TRX_LINE_ID>-1</LINK_TO_CUST_TRX_LINE_ID>
<LINE_TAX_PRECEDENCE/>
<LINE_IS_A_CHILD_FLAG>N</LINE_IS_A_CHILD_FLAG>
<LINE_TAX_INCLUSIVE>N</LINE_TAX_INCLUSIVE>
<LINE_SALES_ORDER_DATE>04-APR-05</LINE_SALES_ORDER_DATE>
<LINE_SALES_ORDER>15042116</LINE_SALES_ORDER>
<LIST_G_TAX_RATE>
<G_TAX_RATE>
<LINE_CUSTOMER_TRX_ID1>179471</LINE_CUSTOMER_TRX_ID1>
<LINK_TO_CUST_TRX_LINE_ID1>2445027</LINK_TO_CUST_TRX_LINE_ID1>
<LINE_TAX_RATE1>0</LINE_TAX_RATE1>
</G_TAX_RATE>
</LIST_G_TAX_RATE>
<CF_INVOICE_LINE_PRINT_NUMBER>1</CF_INVOICE_LINE_PRINT_NUMBER>
<C_SER_REQ>43883</C_SER_REQ>
<C_SHIP_INSTR/>
<C_SER_REQDATE>10-JAN-05</C_SER_REQDATE>
<C_PROB_DESC/>
<C_DISCOUNT>0</C_DISCOUNT>
<CF_ITEM_DISCOUNT_STRING/>
<CF_ITEM_DESC_DSP/>
<C_PRB_RES/>
<SETLINESPRINTEDFLAG>1</SETLINESPRINTEDFLAG>
<SET_PRINTED_FLAG/>
<CF_SERIAL_NUMBER/>
<D_LINE_UNIT_SELLING_PRICE> 68.00 </D_LINE_UNIT_SELLING_PRICE>
<CP_LINE_EXTENDED_AMOUNT> 34.00 </CP_LINE_EXTENDED_AMOUNT>
<CP_DISCOUNT>0</CP_DISCOUNT>
<LINE_DESCRIPTION>TRAVEL LABOR - CA </LINE_DESCRIPTION>
<LINE_TAXYN/>
<CP_LINE_ITEM_AMOUNT>68</CP_LINE_ITEM_AMOUNT>
<LINE_ITEM_AMOUNT>17</LINE_ITEM_AMOUNT>
<LINE_TAX_AMOUNT>0</LINE_TAX_AMOUNT>
<LINE_FREIGHT_AMOUNT>0</LINE_FREIGHT_AMOUNT>
<LINE_TAX_INCL_AMOUNT>0</LINE_TAX_INCL_AMOUNT>
<CF_LINE_ALL_AMOUNT>68</CF_LINE_ALL_AMOUNT>
</G_LINES>
</LIST_G_LINES>
<D_LINE_TOTAL> 17.00 </D_LINE_TOTAL>
<LINE_TOTAL>17</LINE_TOTAL>
<LINE_CHILDREN_COUNT>0</LINE_CHILDREN_COUNT>
<MIN_LINK_TO_CUST_TRX_LINE_ID>-1</MIN_LINK_TO_CUST_TRX_LINE_ID>
<MIN_LINE_TYPE>LINE</MIN_LINE_TYPE>
<CS_LINE_ALL_TOTAL>68</CS_LINE_ALL_TOTAL>
</G_LINE_TOTAL>
<G_LINE_TOTAL>
<LINE_OF_TYPE_FRT>A</LINE_OF_TYPE_FRT>
<ORDER_BY1>2</ORDER_BY1>
<LINK_TO_LINE>2445028</LINK_TO_LINE>
<DUMMY>1</DUMMY>
<LIST_G_LINES>
<G_LINES>
<LINE_ORDER>2</LINE_ORDER>
<LINE_NUMBER>2</LINE_NUMBER>
<ASSET_CREATION_CODE>43883</ASSET_CREATION_CODE>
<EQUIPMENT_TYPE>2</EQUIPMENT_TYPE>
<CONFIG_MODEL_TYPE>STANDARD</CONFIG_MODEL_TYPE>
<BUYER_ID>113851</BUYER_ID>
<UN_NUMBER_ID>433208</UN_NUMBER_ID>
<INVOICING_RULE_ID>0</INVOICING_RULE_ID>
<INVENTORY_ITEM_STATUS_CODE>SERVICE LA</INVENTORY_ITEM_STATUS_CODE>
<DEFAULT_SO_SOURCE_TYPE>433208</DEFAULT_SO_SOURCE_TYPE>
<CONTACT_NAME/>
<ITEM_NUMBER>LABOR-CA</ITEM_NUMBER>
<LINE_CUSTOMER_TRX_ID>xx</LINE_CUSTOMER_TRX_ID>
<LINE_CUSTOMER_TRX_LINE_ID>2445028</LINE_CUSTOMER_TRX_LINE_ID>
<SALES_ORDER_LINE_NUMBER>2</SALES_ORDER_LINE_NUMBER>
<LINE_CHILD_INDICATOR>0</LINE_CHILD_INDICATOR>
<LINE_TYPE>LINE</LINE_TYPE>
<LINE_ITEM_DESCRIPTION>SERVICE LABOR - CA</LINE_ITEM_DESCRIPTION>
<LINE_QTY_ORDERED>.75</LINE_QTY_ORDERED>
<LINE_QTY_INVOICED>.75</LINE_QTY_INVOICED>
<LINE_UOM>HOUR</LINE_UOM>
<LINE_UNIT_SELLING_PRICE>68</LINE_UNIT_SELLING_PRICE>
<LINE_EXTENDED_AMOUNT>51</LINE_EXTENDED_AMOUNT>
<LINE_NET_AMOUNT>51</LINE_NET_AMOUNT>
<LINE_TAX_RATE/>
<LINE_VAT_TAX_ID>1245</LINE_VAT_TAX_ID>
<LINE_TAX_EXEMPTION_ID/>
<LINE_LOCATION_RATE_ID/>
<LINK_TO_CUST_TRX_LINE_ID>-1</LINK_TO_CUST_TRX_LINE_ID>
<LINE_TAX_PRECEDENCE/>
<LINE_IS_A_CHILD_FLAG>N</LINE_IS_A_CHILD_FLAG>
<LINE_TAX_INCLUSIVE>N</LINE_TAX_INCLUSIVE>
<LINE_SALES_ORDER_DATE>04-APR-05</LINE_SALES_ORDER_DATE>
<LINE_SALES_ORDER>15042116</LINE_SALES_ORDER>
<LIST_G_TAX_RATE>
<G_TAX_RATE>
<LINE_CUSTOMER_TRX_ID1>xx</LINE_CUSTOMER_TRX_ID1>
<LINK_TO_CUST_TRX_LINE_ID1>2445028</LINK_TO_CUST_TRX_LINE_ID1>
<LINE_TAX_RATE1>0</LINE_TAX_RATE1>
</G_TAX_RATE>
</LIST_G_TAX_RATE>
<CF_INVOICE_LINE_PRINT_NUMBER>2</CF_INVOICE_LINE_PRINT_NUMBER>
<C_SER_REQ>43883</C_SER_REQ>
<C_SHIP_INSTR/>
<C_SER_REQDATE>10-JAN-05</C_SER_REQDATE>
<C_PROB_DESC/>
<C_DISCOUNT>0</C_DISCOUNT>
<CF_ITEM_DISCOUNT_STRING/>
<CF_ITEM_DESC_DSP/>
<C_PRB_RES/>
<SETLINESPRINTEDFLAG>1</SETLINESPRINTEDFLAG>
<SET_PRINTED_FLAG/>
<CF_SERIAL_NUMBER/>
<D_LINE_UNIT_SELLING_PRICE> 68.00 </D_LINE_UNIT_SELLING_PRICE>
<CP_LINE_EXTENDED_AMOUNT> 51.00 </CP_LINE_EXTENDED_AMOUNT>
<CP_DISCOUNT>0</CP_DISCOUNT>
<LINE_DESCRIPTION>SERVICE LABOR - CA </LINE_DESCRIPTION>
<LINE_TAXYN/>
<CP_LINE_ITEM_AMOUNT>68</CP_LINE_ITEM_AMOUNT>
<LINE_ITEM_AMOUNT>38.25</LINE_ITEM_AMOUNT>
<LINE_TAX_AMOUNT>0</LINE_TAX_AMOUNT>
<LINE_FREIGHT_AMOUNT>0</LINE_FREIGHT_AMOUNT>
<LINE_TAX_INCL_AMOUNT>0</LINE_TAX_INCL_AMOUNT>
<CF_LINE_ALL_AMOUNT>68</CF_LINE_ALL_AMOUNT>
</G_LINES>
</LIST_G_LINES>
<D_LINE_TOTAL> 38.25 </D_LINE_TOTAL>
<LINE_TOTAL>38.25</LINE_TOTAL>
<LINE_CHILDREN_COUNT>0</LINE_CHILDREN_COUNT>
<MIN_LINK_TO_CUST_TRX_LINE_ID>-1</MIN_LINK_TO_CUST_TRX_LINE_ID>
<MIN_LINE_TYPE>LINE</MIN_LINE_TYPE>
<CS_LINE_ALL_TOTAL>68</CS_LINE_ALL_TOTAL>
</G_LINE_TOTAL>
</LIST_G_LINE_TOTAL>
<LIST_G_SUMMARY_INV>
<G_SUMMARY_INV>
<TRX_LINE_ID>2451402</TRX_LINE_ID>
<INV_TAX_TYPE>TAX</INV_TAX_TYPE>
<INV_TAX_TYPE_NAME>Tax</INV_TAX_TYPE_NAME>
<INV_TAX_LINE_DESCRIPTION/>
<INV_TAX_EXTENDED_AMOUNT>0</INV_TAX_EXTENDED_AMOUNT>
<INV_TAX_CODE_NAME>SBXNOTAX</INV_TAX_CODE_NAME>
<INV_TAX_RATE>0</INV_TAX_RATE>
<INV_TAX_EXEMPTION_ID/>
<INV_TAX_LOCATION_RATE_ID/>
<INV_TAX_PRECEDENCE/>
<EURO_TAXABLE_AMOUNT>34</EURO_TAXABLE_AMOUNT>
<INV_TAX_INCLUSIVE_FLAG>N</INV_TAX_INCLUSIVE_FLAG>
<D_TAX_SUMMARY> 0.00 </D_TAX_SUMMARY>
<INV_TAX_TOTAL>0</INV_TAX_TOTAL>
<INV_TAX_DESCRIPTION>Tax SBXNOTAX @ 0.00</INV_TAX_DESCRIPTION>
<D_EURO_TAXABLE_AMOUNT> 34.00 </D_EURO_TAXABLE_AMOUNT>
</G_SUMMARY_INV>
<G_SUMMARY_INV>
<TRX_LINE_ID>2451403</TRX_LINE_ID>
<INV_TAX_TYPE>TAX</INV_TAX_TYPE>
<INV_TAX_TYPE_NAME>Tax</INV_TAX_TYPE_NAME>
<INV_TAX_LINE_DESCRIPTION/>
<INV_TAX_EXTENDED_AMOUNT>0</INV_TAX_EXTENDED_AMOUNT>
<INV_TAX_CODE_NAME>SBXNOTAX</INV_TAX_CODE_NAME>
<INV_TAX_RATE>0</INV_TAX_RATE>
<INV_TAX_EXEMPTION_ID/>
<INV_TAX_LOCATION_RATE_ID/>
<INV_TAX_PRECEDENCE/>
<EURO_TAXABLE_AMOUNT>34</EURO_TAXABLE_AMOUNT>
<INV_TAX_INCLUSIVE_FLAG>N</INV_TAX_INCLUSIVE_FLAG>
<D_TAX_SUMMARY> 0.00 </D_TAX_SUMMARY>
<INV_TAX_TOTAL>0</INV_TAX_TOTAL>
<INV_TAX_DESCRIPTION>Tax SBXNOTAX @ 0.00</INV_TAX_DESCRIPTION>
<D_EURO_TAXABLE_AMOUNT> 34.00 </D_EURO_TAXABLE_AMOUNT>
</G_SUMMARY_INV>
<G_SUMMARY_INV>
<TRX_LINE_ID>2451404</TRX_LINE_ID>
<INV_TAX_TYPE>TAX</INV_TAX_TYPE>
<INV_TAX_TYPE_NAME>Tax</INV_TAX_TYPE_NAME>
<INV_TAX_LINE_DESCRIPTION/>
<INV_TAX_EXTENDED_AMOUNT>0</INV_TAX_EXTENDED_AMOUNT>
<INV_TAX_CODE_NAME>SBXNOTAX</INV_TAX_CODE_NAME>
<INV_TAX_RATE>0</INV_TAX_RATE>
<INV_TAX_EXEMPTION_ID/>
<INV_TAX_LOCATION_RATE_ID/>
<INV_TAX_PRECEDENCE/>
<EURO_TAXABLE_AMOUNT>34</EURO_TAXABLE_AMOUNT>
<INV_TAX_INCLUSIVE_FLAG>N</INV_TAX_INCLUSIVE_FLAG>
<D_TAX_SUMMARY> 0.00 </D_TAX_SUMMARY>
<INV_TAX_TOTAL>0</INV_TAX_TOTAL>
<INV_TAX_DESCRIPTION>Tax SBXNOTAX @ 0.00</INV_TAX_DESCRIPTION>
<D_EURO_TAXABLE_AMOUNT> 34.00 </D_EURO_TAXABLE_AMOUNT>
</G_SUMMARY_INV>
<G_SUMMARY_INV>
<TRX_LINE_ID>2451406</TRX_LINE_ID>
<INV_TAX_TYPE>TAX</INV_TAX_TYPE>
<INV_TAX_TYPE_NAME>Tax</INV_TAX_TYPE_NAME>
<INV_TAX_LINE_DESCRIPTION/>
<INV_TAX_EXTENDED_AMOUNT>0</INV_TAX_EXTENDED_AMOUNT>
<INV_TAX_CODE_NAME>SBXNOTAX</INV_TAX_CODE_NAME>
<INV_TAX_RATE>0</INV_TAX_RATE>
<INV_TAX_EXEMPTION_ID/>
<INV_TAX_LOCATION_RATE_ID/>
<INV_TAX_PRECEDENCE/>
<EURO_TAXABLE_AMOUNT>51</EURO_TAXABLE_AMOUNT>
<INV_TAX_INCLUSIVE_FLAG>N</INV_TAX_INCLUSIVE_FLAG>
<D_TAX_SUMMARY> 0.00 </D_TAX_SUMMARY>
<INV_TAX_TOTAL>0</INV_TAX_TOTAL>
<INV_TAX_DESCRIPTION>Tax SBXNOTAX @ 0.00</INV_TAX_DESCRIPTION>
<D_EURO_TAXABLE_AMOUNT> 51.00 </D_EURO_TAXABLE_AMOUNT>
</G_SUMMARY_INV>
<G_SUMMARY_INV>
<TRX_LINE_ID>2451407</TRX_LINE_ID>
<INV_TAX_TYPE>TAX</INV_TAX_TYPE>
<INV_TAX_TYPE_NAME>Tax</INV_TAX_TYPE_NAME>
<INV_TAX_LINE_DESCRIPTION/>
<INV_TAX_EXTENDED_AMOUNT>0</INV_TAX_EXTENDED_AMOUNT>
<INV_TAX_CODE_NAME>SBXNOTAX</INV_TAX_CODE_NAME>
<INV_TAX_RATE>0</INV_TAX_RATE>
<INV_TAX_EXEMPTION_ID/>
<INV_TAX_LOCATION_RATE_ID/>
<INV_TAX_PRECEDENCE/>
<EURO_TAXABLE_AMOUNT>51</EURO_TAXABLE_AMOUNT>
<INV_TAX_INCLUSIVE_FLAG>N</INV_TAX_INCLUSIVE_FLAG>
<D_TAX_SUMMARY> 0.00 </D_TAX_SUMMARY>
<INV_TAX_TOTAL>0</INV_TAX_TOTAL>
<INV_TAX_DESCRIPTION>Tax SBXNOTAX @ 0.00</INV_TAX_DESCRIPTION>
<D_EURO_TAXABLE_AMOUNT> 51.00 </D_EURO_TAXABLE_AMOUNT>
</G_SUMMARY_INV>
<G_SUMMARY_INV>
<TRX_LINE_ID>2451408</TRX_LINE_ID>
<INV_TAX_TYPE>TAX</INV_TAX_TYPE>
<INV_TAX_TYPE_NAME>Tax</INV_TAX_TYPE_NAME>
<INV_TAX_LINE_DESCRIPTION/>
<INV_TAX_EXTENDED_AMOUNT>0</INV_TAX_EXTENDED_AMOUNT>
<INV_TAX_CODE_NAME>SBXNOTAX</INV_TAX_CODE_NAME>
<INV_TAX_RATE>0</INV_TAX_RATE>
<INV_TAX_EXEMPTION_ID/>
<INV_TAX_LOCATION_RATE_ID/>
<INV_TAX_PRECEDENCE/>
<EURO_TAXABLE_AMOUNT>51</EURO_TAXABLE_AMOUNT>
<INV_TAX_INCLUSIVE_FLAG>N</INV_TAX_INCLUSIVE_FLAG>
<D_TAX_SUMMARY> 0.00 </D_TAX_SUMMARY>
<INV_TAX_TOTAL>0</INV_TAX_TOTAL>
<INV_TAX_DESCRIPTION>Tax SBXNOTAX @ 0.00</INV_TAX_DESCRIPTION>
<D_EURO_TAXABLE_AMOUNT> 51.00 </D_EURO_TAXABLE_AMOUNT>
</G_SUMMARY_INV>
<G_SUMMARY_INV>
<TRX_LINE_ID>2445028</TRX_LINE_ID>
<INV_TAX_TYPE>LINE</INV_TAX_TYPE>
<INV_TAX_TYPE_NAME>Line</INV_TAX_TYPE_NAME>
<INV_TAX_LINE_DESCRIPTION>SERVICE LABOR - CA</INV_TAX_LINE_DESCRIPTION>
<INV_TAX_EXTENDED_AMOUNT>51</INV_TAX_EXTENDED_AMOUNT>
<INV_TAX_CODE_NAME>Sabrix</INV_TAX_CODE_NAME>
<INV_TAX_RATE/>
<INV_TAX_EXEMPTION_ID/>
<INV_TAX_LOCATION_RATE_ID/>
<INV_TAX_PRECEDENCE/>
<EURO_TAXABLE_AMOUNT/>
<INV_TAX_INCLUSIVE_FLAG>N</INV_TAX_INCLUSIVE_FLAG>
<D_TAX_SUMMARY> 51.00 </D_TAX_SUMMARY>
<INV_TAX_TOTAL>51</INV_TAX_TOTAL>
<INV_TAX_DESCRIPTION>Line</INV_TAX_DESCRIPTION>
<D_EURO_TAXABLE_AMOUNT> </D_EURO_TAXABLE_AMOUNT>
</G_SUMMARY_INV>
<G_SUMMARY_INV>
<TRX_LINE_ID>2445027</TRX_LINE_ID>
<INV_TAX_TYPE>LINE</INV_TAX_TYPE>
<INV_TAX_TYPE_NAME>Line</INV_TAX_TYPE_NAME>
<INV_TAX_LINE_DESCRIPTION>TRAVEL LABOR - CA</INV_TAX_LINE_DESCRIPTION>
<INV_TAX_EXTENDED_AMOUNT>34</INV_TAX_EXTENDED_AMOUNT>
<INV_TAX_CODE_NAME>Sabrix</INV_TAX_CODE_NAME>
<INV_TAX_RATE/>
<INV_TAX_EXEMPTION_ID/>
<INV_TAX_LOCATION_RATE_ID/>
<INV_TAX_PRECEDENCE/>
<EURO_TAXABLE_AMOUNT/>
<INV_TAX_INCLUSIVE_FLAG>N</INV_TAX_INCLUSIVE_FLAG>
<D_TAX_SUMMARY> 34.00 </D_TAX_SUMMARY>
<INV_TAX_TOTAL>34</INV_TAX_TOTAL>
<INV_TAX_DESCRIPTION>Line</INV_TAX_DESCRIPTION>
<D_EURO_TAXABLE_AMOUNT> </D_EURO_TAXABLE_AMOUNT>
</G_SUMMARY_INV>
<G_SUMMARY_INV>
<TRX_LINE_ID>2451401</TRX_LINE_ID>
<INV_TAX_TYPE>TAX</INV_TAX_TYPE>
<INV_TAX_TYPE_NAME>Tax</INV_TAX_TYPE_NAME>
<INV_TAX_LINE_DESCRIPTION/>
<INV_TAX_EXTENDED_AMOUNT>0</INV_TAX_EXTENDED_AMOUNT>
<INV_TAX_CODE_NAME>US Tax</INV_TAX_CODE_NAME>
<INV_TAX_RATE>0</INV_TAX_RATE>
<INV_TAX_EXEMPTION_ID/>
<INV_TAX_LOCATION_RATE_ID/>
<INV_TAX_PRECEDENCE/>
<EURO_TAXABLE_AMOUNT>34</EURO_TAXABLE_AMOUNT>
<INV_TAX_INCLUSIVE_FLAG>N</INV_TAX_INCLUSIVE_FLAG>
<D_TAX_SUMMARY> 0.00 </D_TAX_SUMMARY>
<INV_TAX_TOTAL>0</INV_TAX_TOTAL>
<INV_TAX_DESCRIPTION>Tax US Tax @ 0.00</INV_TAX_DESCRIPTION>
<D_EURO_TAXABLE_AMOUNT> 34.00 </D_EURO_TAXABLE_AMOUNT>
</G_SUMMARY_INV>
<G_SUMMARY_INV>
<TRX_LINE_ID>2451405</TRX_LINE_ID>
<INV_TAX_TYPE>TAX</INV_TAX_TYPE>
<INV_TAX_TYPE_NAME>Tax</INV_TAX_TYPE_NAME>
<INV_TAX_LINE_DESCRIPTION/>
<INV_TAX_EXTENDED_AMOUNT>0</INV_TAX_EXTENDED_AMOUNT>
<INV_TAX_CODE_NAME>US Tax</INV_TAX_CODE_NAME>
<INV_TAX_RATE>0</INV_TAX_RATE>
<INV_TAX_EXEMPTION_ID/>
<INV_TAX_LOCATION_RATE_ID/>
<INV_TAX_PRECEDENCE/>
<EURO_TAXABLE_AMOUNT>51</EURO_TAXABLE_AMOUNT>
<INV_TAX_INCLUSIVE_FLAG>N</INV_TAX_INCLUSIVE_FLAG>
<D_TAX_SUMMARY> 0.00 </D_TAX_SUMMARY>
<INV_TAX_TOTAL>0</INV_TAX_TOTAL>
<INV_TAX_DESCRIPTION>Tax US Tax @ 0.00</INV_TAX_DESCRIPTION>
<D_EURO_TAXABLE_AMOUNT> 51.00 </D_EURO_TAXABLE_AMOUNT>
</G_SUMMARY_INV>
</LIST_G_SUMMARY_INV>
<LIST_G_SHIP_CUSTOMER>
<G_SHIP_CUSTOMER>
<SHIP_CUST_NAME>xx</SHIP_CUST_NAME>
<SHIP_ADDRESS1>xx</SHIP_ADDRESS1>
<SHIP_ADDRESS2/>
<SHIP_ADDRESS3/>
<SHIP_ADDRESS4/>
<SHIP_CITY>VAN NUYS</SHIP_CITY>
<SHIP_STATE>CA</SHIP_STATE>
<SHIP_POSTAL_CODE>91405</SHIP_POSTAL_CODE>
<SHIP_COUNTRY>US</SHIP_COUNTRY>
<SHIP_SITE_ID>xx</SHIP_SITE_ID>
<SHIP_CUSTOMER_ID>xx</SHIP_CUSTOMER_ID>
<SHIP_SITE_TAX_REFERENCE/>
<SHIP_CUST_TAX_REFERENCE/>
<SHIP_TO_STATE>CA</SHIP_TO_STATE>
<SHIP_TO_PROVINCE/>
<SHIP_COUNTRY_DESCRIPTION>United States</SHIP_COUNTRY_DESCRIPTION>
<SHIP_TRX_TAX_REFERENCE/>
<C_SHIP_TO_CONCATENATED>xx
United States</C_SHIP_TO_CONCATENATED>
</G_SHIP_CUSTOMER>
</LIST_G_SHIP_CUSTOMER>
<LIST_G_REMIT_CUSTOMER>
<G_REMIT_CUSTOMER>
<REMIT_PROVINCE/>
<REMIT_ADDRESS1>DRESSER, INC - xx</REMIT_ADDRESS1>
<REMIT_ADDRESS2>FED TAX NO: xx</REMIT_ADDRESS2>
<REMIT_ADDRESS3>PO BOX xxx</REMIT_ADDRESS3>
<REMIT_ADDRESS4/>
<REMIT_CITY>DALLAS</REMIT_CITY>
<REMIT_STATE>TX</REMIT_STATE>
<REMIT_POSTAL_CODE>75320-1266</REMIT_POSTAL_CODE>
<REMIT_COUNTRY>US</REMIT_COUNTRY>
<REMIT_ADDRESS_ID>1210</REMIT_ADDRESS_ID>
<REMIT_COUNTRY_DESCRIPTION>United States</REMIT_COUNTRY_DESCRIPTION>
<CF_ADDR>DRESSER, INC - xxx
United States</CF_ADDR>
<C_REMIT_TO_CONCATENATED>DRESSER, INC - xxx
United States</C_REMIT_TO_CONCATENATED>
<CF_SPECIAL_NOTE>Billing Inquiries: DRESSER, INC - xxx </CF_SPECIAL_NOTE>
</G_REMIT_CUSTOMER>
</LIST_G_REMIT_CUSTOMER>
<LIST_G_ADJUSTMENT>
</LIST_G_ADJUSTMENT>
<C_CONTRACT_NAME/>
<CF_ADDR_STRING>xxx;</CF_ADDR_STRING>
<CF_FOB>O</CF_FOB>
<CF_SHIPPING_INSTRUCTION/>
<SHIP_VIA_DESCRIPTION>SHIPPING TO DECIDE</SHIP_VIA_DESCRIPTION>
<CF_WORK_REQUIRED>Q3-L4</CF_WORK_REQUIRED>
<CP_PROBLEM_SPL_INSTN>Problem - Q3-L4
Resolution - </CP_PROBLEM_SPL_INSTN>
<CP_SERV_REQDATE/>
<CF_TRACKING_NUMBER> </CF_TRACKING_NUMBER>
<CF_RESET_INVOICE_NUMBERING>0</CF_RESET_INVOICE_NUMBERING>
<D_INV_TAX_AMOUNT> 0.00 </D_INV_TAX_AMOUNT>
<CF_DELIVERY_ADDRESS/>
<LINE_COUNT>2</LINE_COUNT>
<D_INV_ITEM_AMOUNT> 136.00 </D_INV_ITEM_AMOUNT>
<TERM_RELATIVE_ROUNDED>100</TERM_RELATIVE_ROUNDED>
<INV_SALES_ORDER_COUNT>1</INV_SALES_ORDER_COUNT>
<INV_ITEM_AMOUNT>136</INV_ITEM_AMOUNT>
<D_INV_FREIGHT_AMOUNT> 0.00 </D_INV_FREIGHT_AMOUNT>
<INV_FREIGHT_AMOUNT>0</INV_FREIGHT_AMOUNT>
<INV_TAX_AMOUNT>0</INV_TAX_AMOUNT>
<D_INV_ALL_AMOUNT> 136.00 </D_INV_ALL_AMOUNT>
<INV_SALES_ORDER>15042116</INV_SALES_ORDER>
<INV_ALL_AMOUNT>136</INV_ALL_AMOUNT>
<TERM_TAX_COUNT>10</TERM_TAX_COUNT>
<INV_TAX_COUNT>10</INV_TAX_COUNT>
<TERM_ITEM_AMOUNT>85</TERM_ITEM_AMOUNT>
<TERM_TAX_AMOUNT>0</TERM_TAX_AMOUNT>
<TERM_FREIGHT_AMOUNT>0</TERM_FREIGHT_AMOUNT>
<SUM_LINE_TAX_INCL_AMOUNT>0</SUM_LINE_TAX_INCL_AMOUNT>
<SUM_LINE_TAX_AMOUNT>0</SUM_LINE_TAX_AMOUNT>
<TERM_ALL_AMOUNT>85</TERM_ALL_AMOUNT>
</G_INV_TERM>
</LIST_G_INV_TERM>
<LIST_G_TEMP>
<G_TEMP>
<TRX_NUMBER1>100800</TRX_NUMBER1>
<CUSTOMER_TRX_ID1>179471</CUSTOMER_TRX_ID1>
</G_TEMP>
<G_TEMP>
<TRX_NUMBER1>100800</TRX_NUMBER1>
<CUSTOMER_TRX_ID1>179471</CUSTOMER_TRX_ID1>
</G_TEMP>
<G_TEMP>
<TRX_NUMBER1>100800</TRX_NUMBER1>
<CUSTOMER_TRX_ID1>179471</CUSTOMER_TRX_ID1>
</G_TEMP>
<G_TEMP>
<TRX_NUMBER1>100800</TRX_NUMBER1>
<CUSTOMER_TRX_ID1>179471</CUSTOMER_TRX_ID1>
</G_TEMP>
<G_TEMP>
<TRX_NUMBER1>100800</TRX_NUMBER1>
<CUSTOMER_TRX_ID1>179471</CUSTOMER_TRX_ID1>
</G_TEMP>
<G_TEMP>
<TRX_NUMBER1>100800</TRX_NUMBER1>
<CUSTOMER_TRX_ID1>179471</CUSTOMER_TRX_ID1>
</G_TEMP>
<G_TEMP>
<TRX_NUMBER1>100800</TRX_NUMBER1>
<CUSTOMER_TRX_ID1>179471</CUSTOMER_TRX_ID1>
</G_TEMP>
<G_TEMP>
<TRX_NUMBER1>100800</TRX_NUMBER1>
<CUSTOMER_TRX_ID1>179471</CUSTOMER_TRX_ID1>
</G_TEMP>
<G_TEMP>
<TRX_NUMBER1>100800</TRX_NUMBER1>
<CUSTOMER_TRX_ID1>179471</CUSTOMER_TRX_ID1>
</G_TEMP>
<G_TEMP>
<TRX_NUMBER1>100800</TRX_NUMBER1>
<CUSTOMER_TRX_ID1>179471</CUSTOMER_TRX_ID1>
</G_TEMP>
<G_TEMP>
<TRX_NUMBER1>100800</TRX_NUMBER1>
<CUSTOMER_TRX_ID1>179471</CUSTOMER_TRX_ID1>
</G_TEMP>
<G_TEMP>
<TRX_NUMBER1>100800</TRX_NUMBER1>
<CUSTOMER_TRX_ID1>179471</CUSTOMER_TRX_ID1>
</G_TEMP>
<G_TEMP>
<TRX_NUMBER1>100800</TRX_NUMBER1>
<CUSTOMER_TRX_ID1>179471</CUSTOMER_TRX_ID1>
</G_TEMP>
<G_TEMP>
<TRX_NUMBER1>100800</TRX_NUMBER1>
<CUSTOMER_TRX_ID1>179471</CUSTOMER_TRX_ID1>
</G_TEMP>
<G_TEMP>
<TRX_NUMBER1>100800</TRX_NUMBER1>
<CUSTOMER_TRX_ID1>179471</CUSTOMER_TRX_ID1>
</G_TEMP>
<G_TEMP>
<TRX_NUMBER1>100800</TRX_NUMBER1>
<CUSTOMER_TRX_ID1>179471</CUSTOMER_TRX_ID1>
</G_TEMP>
<G_TEMP>
<TRX_NUMBER1>100800</TRX_NUMBER1>
<CUSTOMER_TRX_ID1>179471</CUSTOMER_TRX_ID1>
</G_TEMP>
<G_TEMP>
<TRX_NUMBER1>100800</TRX_NUMBER1>
<CUSTOMER_TRX_ID1>179471</CUSTOMER_TRX_ID1>
</G_TEMP>
<G_TEMP>
<TRX_NUMBER1>100800</TRX_NUMBER1>
<CUSTOMER_TRX_ID1>179471</CUSTOMER_TRX_ID1>
</G_TEMP>
<G_TEMP>
<TRX_NUMBER1>100800</TRX_NUMBER1>
<CUSTOMER_TRX_ID1>179471</CUSTOMER_TRX_ID1>
</G_TEMP>
</LIST_G_TEMP>
<LIST_G_COMMITMENT_ADJUSTMENT>
<G_COMMITMENT_ADJUSTMENT>
<COMMIT_THIS_INVOICE/>
<D_COMMIT_THIS_INVOICE> </D_COMMIT_THIS_INVOICE>
<D_COMMIT_ACTIVITY> 0.00 </D_COMMIT_ACTIVITY>
</G_COMMITMENT_ADJUSTMENT>
</LIST_G_COMMITMENT_ADJUSTMENT>
<C_TRX_TYPE>INVOICE</C_TRX_TYPE>
<CF_TAX_CITY>1</CF_TAX_CITY>
<CP_TCITY> 0.00 </CP_TCITY>
<CF_TAX_STATE>1</CF_TAX_STATE>
<CP_TSTATE> 0.00 </CP_TSTATE>
<CF_TAX_COUNTY>1</CF_TAX_COUNTY>
<CP_TCOUNTY> 0.00 </CP_TCOUNTY>
<CF_TAX_LOCAL>1</CF_TAX_LOCAL>
<CP_TLOCAL> 0.00 </CP_TLOCAL>
<CF_PHONE_NUMBER>909-xxx-xxxx</CF_PHONE_NUMBER>
<C_TRX_DISPLAY/>
<C_SHIP>WAS</C_SHIP>
<CF_IF_SALES_ORDER_EXISTS>1</CF_IF_SALES_ORDER_EXISTS>
<CF_NO>ABC</CF_NO>
<GET_CONTACT_INFO>Y</GET_CONTACT_INFO>
<SALESREP_NAME>WSG - NJ</SALESREP_NAME>
<BILL_TO_FNAME/>
<CF_CTRL_STRING>{PRN:noprint CPY:1} </CF_CTRL_STRING>
<BILL_TO_LNAME/>
<BILL_TO_MAIL_STOP/>
<BILL_TO_ATTN/>
<SHIP_TO_FNAME/>
<SHIP_TO_LNAME/>
<SHIP_TO_ATTN/>
<SHIP_TO_MAIL_STOP/>
<TAX_PRINTING_OPTION>ITEMIZE AND SUM</TAX_PRINTING_OPTION>
<TAX_GROUP_BY>,v.tax_code</TAX_GROUP_BY>
<TAX_ORDER_BY>v.tax_code,</TAX_ORDER_BY>
<TAX_SUMMARY>Y</TAX_SUMMARY>
<TAX_DETAIL>Y</TAX_DETAIL>
<TAX_RECAP>N</TAX_RECAP>
<FREIGHT_DETAIL>Y</FREIGHT_DETAIL>
<COMMIT_BOX_FLAG>N</COMMIT_BOX_FLAG>
<COMMIT_TRX_NUMBER/>
<COMMIT_PARENT_TYPE/>
<COMMIT_PARENT_TYPE_NAME/>
<COMMIT_ORIGINAL_AMT/>
<COMMIT_TOTAL_ACTIVITY/>
<COMMIT_AMT_UNINVOICED/>
<COMMIT_START_DATE/>
<COMMIT_END_DATE/>
<REMIT_TO_CONTROL_ID>1210</REMIT_TO_CONTROL_ID>
<PREVIOUS_TYPE_NAME/>
<PREVIOUS_TRX_NUMBER/>
<TERM_COUNT>1</TERM_COUNT>
<TERM_MAX_VALUE>1</TERM_MAX_VALUE>
<D_COMMIT_BALANCE> </D_COMMIT_BALANCE>
<D_COMMIT_AMOUNT> </D_COMMIT_AMOUNT>
<D_COMMIT_AMT_UNINVOICED> </D_COMMIT_AMT_UNINVOICED>
<BILL_COUNTRY_DESCRIPTION>United States</BILL_COUNTRY_DESCRIPTION>
<TRX_TAX_REFERENCE/>
<C_BILL_TO_CONCATENATED>Attn: Accounts Payable
XXX COMPANY - NA MARKETING
PO BOX Q, SECTION XX
XX
CONCORD CA 94524-XXXX
United States</C_BILL_TO_CONCATENATED>
</G_INVOICE>
</LIST_G_INVOICE>
</G_ORDER_BY>
</LIST_G_ORDER_BY>
<LIST_G_REPEAT_HEADER>
<G_REPEAT_HEADER>
<ROWNUM>1</ROWNUM>
</G_REPEAT_HEADER>
</LIST_G_REPEAT_HEADER>
<MSG_PRECEDENCE>Precedence:</MSG_PRECEDENCE>
<SPECIAL_INSTRUCTIONS/>
<MSG_SALES_TAX>Sales Tax @ &TAX_RATE</MSG_SALES_TAX>
<MSG_VAT_TAX>Tax &TAX_CODE &EURO_TAXABLE_AMOUNT@ &TAX_RATE</MSG_VAT_TAX>
<REPORT_ALL_AMOUNT>85</REPORT_ALL_AMOUNT>
<REPORT_ITEM_AMOUNT>85</REPORT_ITEM_AMOUNT>
<REPORT_TAX_AMOUNT>0</REPORT_TAX_AMOUNT>
<REPORT_FREIGHT_AMOUNT>0</REPORT_FREIGHT_AMOUNT>
<REPORT_TERM_COUNT>1</REPORT_TERM_COUNT>
<PAGE_ITEM_RUNNING_TOTAL>136</PAGE_ITEM_RUNNING_TOTAL>
<PAGE_FREIGHT_RUNNING_TOTAL>0</PAGE_FREIGHT_RUNNING_TOTAL>
<PAGE_TAX_RUNNING_TOTAL>0</PAGE_TAX_RUNNING_TOTAL>
<PAGE_ALL_RUNNING_TOTAL>136</PAGE_ALL_RUNNING_TOTAL>
<PAGE_CURRENCY_CODE>USD</PAGE_CURRENCY_CODE>
<DISP_ITEM_RUNNING_TOTAL/>
<PAGE_TERM_ITEM_AMOUNT>85</PAGE_TERM_ITEM_AMOUNT>
<INVOICE_LINES_PRINTED_FLAG>N</INVOICE_LINES_PRINTED_FLAG>
<PAGE_TERM_TAX_AMOUNT>0</PAGE_TERM_TAX_AMOUNT>
<PAGE_TERM_FREIGHT_AMOUNT>0</PAGE_TERM_FREIGHT_AMOUNT>
<PAGE_TERM_ALL_AMOUNT>85</PAGE_TERM_ALL_AMOUNT>
<PAGE_END_OF_INVOICE>Y</PAGE_END_OF_INVOICE>
<PAGE_ADJ_LINE_AMOUNT/>
<PAGE_ADJ_TAX_AMOUNT/>
<PAGE_ADJ_FREIGHT_AMOUNT/>
<PAGE_ADJ_ALL_AMOUNT/>
<PAGE_ADJ_COMMENTS/>
<PAGE_TRX_TYPE>INV</PAGE_TRX_TYPE>
<REPORT_INV_COUNT>1</REPORT_INV_COUNT>
<PRODUCT_INSTALLED_SO>N</PRODUCT_INSTALLED_SO>
<REPORT_ADJ_ALL_AMOUNT>85</REPORT_ADJ_ALL_AMOUNT>
<D_PAGE_TERM_ITEM_AMOUNT/>
<D_PAGE_TERM_TAX_AMOUNT/>
<D_PAGE_TERM_FREIGHT_AMOUNT/>
<D_PAGE_TERM_ALL_AMOUNT/>
<D_PAGE_ADJ_LINE_AMOUNT/>
<D_PAGE_ADJ_TAX_AMOUNT/>
<D_PAGE_ADJ_FREIGHT_AMOUNT/>
<D_PAGE_ADJ_ALL_AMOUNT/>
<C_EC_WHERE_CLAUSE>AND NOT EXISTS
(SELECT 'X'
from ECE_TP_DETAILS ETD,
ECE_TP_HEADERS ETH
WHERE ETH.TP_HEADER_ID = A_BILL.TP_HEADER_ID
AND ETD.TP_HEADER_ID = ETH.TP_HEADER_ID
AND ETD.EDI_FLAG = 'Y'
AND ETD.DOCUMENT_ID = 'INO'
AND ETD.DOCUMENT_TYPE =
DECODE (TYPES.TYPE, 'CM',
DECODE(A.PREVIOUS_CUSTOMER_TRX_ID,
NULL,'OACM',
'CM'),
TYPES.TYPE)
</C_EC_WHERE_CLAUSE>
<RP_ERROR>ERROR</RP_ERROR>
<C_DESCRIPTION/>
<C_TAX_SUMMARY_NAME/>
<C_CREDIT_MEMO/>
<C_CONFIRMATION1/>
<C_CONFIRMATION2/>
<C_NUM_ADJUST/>
<C_DATE/>
<C_TAX_SUMMARY_CODE/>
<PAGE_SUM_TAX_AMOUNT>0</PAGE_SUM_TAX_AMOUNT>
<PAGE_SUM_TAX_INCL_AMOUNT>0</PAGE_SUM_TAX_INCL_AMOUNT>
<C_PRB_BRIEF_DESC/>
<CP_SID>SID:NAOADEV3</CP_SID>
</DWDRAXINV>
Here's the error:
XML Publisher: Version : 11.5.0
Copyright (c) 1979, 1999, Oracle Corporation. All rights reserved.
XDOBURSTREP module: XML Publisher Report Bursting Program
Current system time is 24-JAN-2008 14:45:31
XML/BI Publisher Version : 5.6.3
Request ID: 12167213
All Parameters: ReportRequestID=12167133:DebugFlag=Y
Report Req ID: 12167133
Debug Flag: Y
Updating request description
Updated description
Retrieving XML request information
Node Name:DFW111SSUN012
Preparing parameters
null output =/naoadev1/app/comn/admin/out/naoadev1_dfw111ssun012/o12167213.out
inputfilename =/naoadev1/app/comn/admin/out/naoadev1_dfw111ssun012/o12167133.out
Data XML File:/naoadev1/app/comn/admin/out/naoadev1_dfw111ssun012/o12167133.out
Set Bursting parameters..
Temp. Directory:/naoadev1/app/appl/dres/11.5.0/xml
[012408_024539888][][STATEMENT] Oracle XML Parser version ::: Oracle XDK Java 9.0.4.0.0 Production
Start bursting process..
[012408_024539899][][STATEMENT] /naoadev1/app/appl/dres/11.5.0/xml
[012408_024539984][][EXCEPTION] oracle.xml.parser.v2.XMLParseException: Expected '-->' instead of 'EOF'.
at oracle.xml.parser.v2.XMLError.flushErrors1(XMLError.java:205)
at oracle.xml.parser.v2.XMLReader.scanComment(XMLReader.java:1087)
at oracle.xml.parser.v2.NonValidatingParser.parseComment(NonValidatingParser.java:368)
at oracle.xml.parser.v2.NonValidatingParser.parseElement(NonValidatingParser.java:1222)
at oracle.xml.parser.v2.NonValidatingParser.parseRootElement(NonValidatingParser.java:301)
at oracle.xml.parser.v2.NonValidatingParser.parseDocument(NonValidatingParser.java:268)
at oracle.xml.parser.v2.XMLParser.parse(XMLParser.java:227)
at oracle.apps.xdo.common.config.ConfigReader.read(ConfigReader.java:437)
at oracle.apps.xdo.common.config.ConfigReader.read(ConfigReader.java:416)
at oracle.apps.xdo.batch.bursting.FileHandler.setTempDir(FileHandler.java:272)
at oracle.apps.xdo.batch.bursting.FileHandler.<init>(FileHandler.java:41)
at oracle.apps.xdo.batch.BurstingProcessorEngine.setTempDir(BurstingProcessorEngine.java:774)
at oracle.apps.xdo.batch.BurstingProcessorEngine.process(BurstingProcessorEngine.java:891)
at oracle.apps.xdo.oa.cp.JCP4XDOBurstingEngine.runProgram(JCP4XDOBurstingEngine.java:269)
at oracle.apps.fnd.cp.request.Run.main(Run.java:161)
Followed many lines later by this error:
[012408_024546649][oracle.apps.xdo.batch.bursting.ProcessCoreDocument][EXCEPTION] java.io.FileNotFoundException: -- I used my own path
/xdoehgHGavj1O012408_0245466440.fo (No such file or directory)
at java.io.FileOutputStream.open(Native Method)
at java.io.FileOutputStream.<init>(FileOutputStream.java:179)
at java.io.FileOutputStream.<init>(FileOutputStream.java:131)
which I assume is simply a consequence of the earlier step failing...
Here's the control file for the bursting program, based on the demo:
<?xml version="1.0" encoding="UTF-8"?>
<xapi:requestset xmlns:xapi="http://xmlns.oracle.com/oxp/xapi" type="bursting">
<xapi:request select="/DWDRAXINV/LIST_G_ORDER_BY/G_ORDER_BY/LIST_G_INVOICE/G_INVOICE">
<xapi:delivery>
<xapi:email id="123" server="ads119sexch1.corp.dresser.com" port="25" from="[email protected]" reply-to ="[email protected]">
<xapi:message id="123" to="[email protected]" attachment="true" subject="Your Invoice #${TRX_NUMBER} ${BILL_CUST_NAME}">Dear Sir/Madam,
Please find attached your invoice #${TRX_NUMBER} for ${BILL_CUST_NAME} dated ${TRX_DATE}
Your payment terms for this invoice are ${G_INV_TERM[1]/TERM_NAME}.
Please pay on time.
Regards
Oracle</xapi:message>
</xapi:email>
</xapi:delivery>
<xapi:document output-type="pdf" delivery="123">
<xapi:template type="rtf"
location="/naoadev3/app/appl/dres/11.5.0/xml/DRESRTSRAXINV.rtf" >
</xapi:template>
</xapi:document>
</xapi:request>
</xapi:requestset>
This part seems fine - the email goes out, but the expected PDF attachment of the invoice is not there, presumably because it wasn't generated.
Thanks for making it to the bottom of this!!!
Any suggestions?
Thanks,
Eric Safern
Dresser, Inc.Hello,
I'm working on the similar requirement. same bursting the program based on the TRX_NUMBER. Does the bursting happens?
Thanks
Geetha -
XML Parser for C++ v2 on HP-UX 11.00
Hi,
We are using XML parser for C++ v2(2.0.1) on HP-UX 11.00.Oracle version is 8.0.5. Our application is dumping core .analyzing the core gives pointers to Oracle function calls. We found that some datatypes in parser's oratypes.h (e.g ub4,sb4)were not in consistence with datatypes in native Oracle's oratypes.h.how to solve this problem? is there any linkage or Includepath order recommended to solve this? let me know if u know any solution/workaround
thanx in advance
vijayanand
nullWe're working on getting this fixed. Thanks for reporting it.
-
since installing the latest update, Firefox first operated with some errors but now will not load at all; it gives me the following error --
XML Parsing Error: not well formed
locations chrome://browser/content/browser.xml
Line Number 1191, column 20:
utton id="back-forward-dropmarker" type="menu" chromedir="&locale.dir;"-------------------
please note that the words "utton ID" are exactly as the error message gives it; and at the end of the message there are exactly 19 hyphens.
I don't know why this faulty code is referencing things to do with "chrome"... the Chrome browser is not installed on this PC or anywhere on our network.
Also, this is not the first problem I had after clicking Firefox's prompt for the latest update. Before Firefox retreated into this error message, it was loading but running with some faults...
1. the bookmark symbol was not appearing on the right hand side of the URL line, so I had always to click on "bookmark this page", after which the bookmark symbol did appear; however I don't know if the bookmarking function worked properly.
2. the back and forward buttons were not highlighted, as if I had not come from a previous page; so once I clicked on a link to a new page I could not go back to where I came from because Fiefox thought I hadn't come from anywhere.
3. there may have been other errors, but I did not find them.
How do I reinstate my Firefox program to work properly please? do I have to download the latest version and reinstal? if so, do I have to remove the old version first? or is there a fix?
Even to write this message I have been forced to use (yuk -- I don't like to say this!!!) Internet Explorer. So please -- I need help urgently.
Thanks,
NOELSome how I solved my problem by opening a user account and downloading Firefox 4.0 beta and installing it, I did try it, worked fine, so I did close the user account and did go back to my own account(switched user), the main page that I had problem with Firefox which would not open, I dabble click on Firefox it start working again!! I hope that solves your problem too.
firefox will not open, it gives me this cod and would not turn off, Error on switching in renew: NS_ERROR_UNEXPECTED, Component returned failure code: 0x8000ffff (NS_ERROR_UNEXPECTED) [nsIPrefBranch.getCharPref] id: none
Maybe you are looking for
-
Sharepoint 2013 WIKI change new page content
After surfing throught a lot of tutorials talking about how to create content templates, Master Templates and everything else in Older versions of Sharepoint, I can't modify the default content on a new Entreprise Wiki page. All I want is when someon
-
My ipod touch 4 gen is showing headphones in but they are not
My ipod touch 4 gen is showing headphones in but they are not.plz help me
-
Easy example just clicking an email It will open a tab to play a game or to install flp media player I also work with ebay I go to click on an item then a new tab opens saying redirecting and goes to an add. website I tried the ask before installing
-
Hi, my requirement is to raise Purchase order for KIT item.For Example-- For 1 Kit item A, including 1 table and 4 chairs. Define components (table and chair) for item A by using Bills of Material screen. In Order Management, when user orders 100 ite
-
Corrupted Frame files not importing correctly to RoboHelp and can't save MIF as FM
Hi, I have Adobe Technical Communication Suite 3.0, which has FrameMaker 10.0.2.249 in it. I created a user guide in FrameMaker, some of the chapters for which I imported from Word, and little bits of text here and there of which I copied and pasted