Loading and parsing XML files
I am currently working on an application in which I have a XML file that is 1.5 mb and has 1100 records that I need to load and parse. Loading takes less than a minute, but when I try to parse it with the DOM parser it's taking too much time. I am trying to put it into an array and then display it as if I'm tied to a database. I need a different approach. Does anyone have any experience and insight with the DOM parser? Would the SAX parser be a better way to go, why and how?
You can use SAX... but SAX is good only if you want to read the data once.
If you want to use the same data again and again then you might have to parse the file again... which prooves expensive.
DOM will take too much of memory and CPU time.
Have you tried using JDOM ? it is a new kind of a XML parsing utility that is quite lightweight and has good api to recurse the JDOM tree also.
check it out at
http://www.jdom.org.
hope this helps.
regards,
Abhishek.
Similar Messages
-
Error in retrieving and parsing XML File
Hi Folks
I am Working on People centric user interface, While i am custimizing a application in Business application Builder i am getting this error
" Error in retrieving and parsing XML File "
can any body look on this and give me the solution
it will be rewarded
Regards
M.S.KumarHello,
As mentionned by SAP_TECH, avoid to use the BAB.
Go to CRMC_BLUEPRINT_C and use the different option in the menu to customize the field group, toolbar group, events, ...
Use the PCUI cookbook to find your way.
Regards,
Fred -
what is the best method for loading external XML (with
inherent HTML) content into Flash and into the TextArea component?
here is the requirement:
i have an image loader and a TextArea together on the screen.
a "story" is loaded which will present a series of images (in the
image loading) associated with a corresponding text (in the
TextArea). a "story" has multiple image/text sections that are
navigatied through with FRWD/BACK buttons. any given section can
also have multiple sub-sections or "frames".
here is a diagram of the flow (in this case there would be 5
click throughs: 5 text/image sequences, but all contained only
within 4 sections):
http://jalaka.com/lab/ia/story_nav.jpg
below is my proposed sample XML structure. i want Flash to
recognize how many sections and frames within sections there are in
each story XML document - in order to generate a corresponding
navigation structure (a tab for each section). HTML content will be
immediate availble to loadinto TextArea as user move forward in
sequence with nav. and images references can also be preloaded into
available MC containers to be swapped into place as user navigates
forward in sequence. also need to read and store attributes for
each node in the XML to come up in MCs in sequence. and must also
be able to parse XML in a way to place simple HTML formatted
content (within XML) into the TextArea.
would Arrays be used?
<story title = "Story Title">
<section num = "1" title = "Section One Title" >
<frame image = "1.jpg" caption = "caption text
here"><b>Content</b><br><br>content
content content</frame>
</section>
<section num = "2" title = "Section Two Title" >
<frame image = "1.jpg" caption = "caption text
here"><b>Content</b><br><br>content
content content</frame>
<frame image = "2.jpg" caption = "caption text
here"><b>Content</b><br><br>content
content content</frame>
</section>
</story>Placing the XML into an array is a great plan. What you want
is each array element to be an object containing the section data.
Another plan is to use a List or Combox component. Again each
data property element would be an object containing the section
data. -
Load and Read XML file size more than 4GB
Hi All
My environment is Oracle 10.2.0.4 on Solaris and I have processes to work with XML file as below detail by PL/SQL
1. I read XML file over HTTP port into XMLTYPE column in table.
2. I read value no.1 from table and extract to insert into another table
On test db, everything is work but I got below error when I use production XML file
ORA-31186: Document contains too many nodes
Current XML size about 100MB but the procedure must support XML file size more than 4GB in the future.
Belows are some part of my code for your info.
1. Read XML by line into variable and insert into table
LOOP
UTL_HTTP.read_text(http_resp, v_resptext, 32767);
DBMS_LOB.writeappend (v_clob, LENGTH(v_resptext), v_resptext);
END LOOP;
INSERT INTO XMLTAB VALUES (XMLTYPE(v_clob));
2. Read cell value from XML column and extract to insert into another table
DECLARE
CURSOR c_xml IS
(SELECT trim(y.cvalue)
FROM XMLTAB xt,
XMLTable('/Table/Rows/Cells/Cell' PASSING xt.XMLDoc
COLUMNS
cvalue
VARCHAR(50)
PATH '/') y;
BEGIN
OPEN c_xml;
FETCH c_xml INTO v_TempValue;
<Generate insert statement into another table>
EXIT WHEN c_xml%NOTFOUND;
CLOSE c_xml;
END
And one more problem is performance issue when XML file is big, first step to load XML content to XMLTYPE column slowly.
Could you please suggest any solution to read large XML file and improve performance?
Thank you in advance.
HikoSee Mark Drake's (Product Manager Oracle XMLDB, Oracle US) response in this old post: ORA-31167: 64k size limit for XML node
The "in a future release" reference, means that this boundary 64K / node issue, was lifted in 11g and onwards...
So first of all, if not only due to performance improvements, I would strongly suggest to upgrade to a database version which is supported by Oracle, see My Oracle Support... In short Oracle 10.2.x was in extended support up to summer 2013, if I am not mistaken and is currently not supported anymore...
If you are able to able to upgrade, please use the much, much more performing XMLType Securefile Binary XML storage option, instead of the XMLType (Basicfile) CLOB storage option.
HTH -
Actually i am using an off-line form to load very large XML file and using firefox to load that form. But, its taking more time to load and some time the browser crashed. through DOM parsing this XML file to my form. Is there any option to increase DOM handler size in firefox
Thank you for your suggestion. I have a question,
though. If I use a relational database and try to
access it for EACH and EVERY click the user makes,
wouldn't that take much time to populate the page with
data?
Isn't XML store more efficient here? Please reply me.You have the choice of reading a small number of records (10 children per element?) from a database, or parsing multiple megabytes. Reading 10 records from a database should take maybe 100 milliseconds (1/10 of a second). I have written a web application that reads several hundred records and returns them with acceptable response time, and I am no expert. To parse an XML file of many megabytes... you have already tried this, so you know how long it takes, right? If you haven't tried it then you should. It's possible to waste a lot of time considering alternatives -- the term is "analysis paralysis". Speculating on how fast something might be doesn't get you very far. -
Loading AMConfig.properties and ServerConfig.xml files
Hi
I am building a standalone java application that given a user name it needs to get the roles for this user and then load the permission sets of all the polices that are assigned to the role's of the user.
1 - Connect to Access Manager
2 - Login as Admin
3 - Get AMUser Object
4 - Read User Roles
5 - Create Policy Manager
6 - Get Policy Names
7 - Read Policy Object
All steps are working fine except number 7 as I need to load the serverconfig.xml file but whenever I put it in the config folder I can't get an AMStoreConnection object.
any ideas about how to load both files with no problems or to load the serverconfig.xml file after creating an AMStoreConnection object.
ThnaksYou can use SAX... but SAX is good only if you want to read the data once.
If you want to use the same data again and again then you might have to parse the file again... which prooves expensive.
DOM will take too much of memory and CPU time.
Have you tried using JDOM ? it is a new kind of a XML parsing utility that is quite lightweight and has good api to recurse the JDOM tree also.
check it out at
http://www.jdom.org.
hope this helps.
regards,
Abhishek. -
Hi All,
I have some troubles trying to load and parse a simple xml file like this:
<?xml version="1.0" encoding="UTF-8"?>
<entry>
<id>1</id>
</entry>
<entry>
<id>2</id>
</entry>
With this few lines of code:
var url:URLRequest = new URLRequest("myXML.xml");
var xml:XML;
var rss:URLLoader = new URLLoader();
rss.load(url);
rss.addEventListener(Event.COMPLETE, readRss);
function readRss(e:Event):void{
xml = XML(rss.data);
var ns:Namespace=xml.namespace();
txt_field.text=xml..ns::entry[0].ns::id;
I get this error: A conflict exists with inherited definition spark.components:Application.url in namespace public.
in: var url:URLRequest = new URLRequest("myXML.xml");
Please help me ... thank you in advance.
MicheleHi Michele,
Try to use different name for your URLRequest object...It seems that there is conflict existing with the inherited url property of the Application and the one you declared so do the following..
var _url:URLRequest = new URLRequest("myXML.xml");
var xml:XML;
var rss:URLLoader = new URLLoader();
rss.load(_url);
Thanks,
Bhasker -
Load data in xml file into Pdf form created by LiveCycle Designer
I want to load data in xml file into Pdf form when Pdf opened and Form field will be filled with data from xml file .I try to use $host.importdata("filename.xml"); But i could not find suitable place to run my code. Can anyone give me some advice? thank you.
Hi,
extract your xml and then you can use insert all clause.
here's very small example on 10.2.0.1.0
SQL> create table table1(id number,val varchar2(10));
Table created.
SQL> create table table2(id number,val varchar2(10));
Table created.
SQL> insert all
2 into table1 values(id,val)
3 into table2 values(id2,val2)
4 select extractValue(x.col,'/a/id1') id
5 ,extractValue(x.col,'/a/value') val
6 ,extractValue(x.col,'/a/value2') val2
7 ,extractValue(x.col,'/a/id2') id2
8 from (select xmltype('<a><id1>1</id1><value>a</value><id2>2</id2><value2>b</value2></a>') col from dual) x;
2 rows created.
SQL> select * from table1;
ID VAL
1 a
SQL> select * from table2;
ID VAL
2 b Ants -
How to parse XML files from normal FTP Servers?
I want to parse xml files from a normal FTP Servers , NOT the sap application severs itself. How can i do that?
I know how to use the SAPFTP getting and putting files ,but I don't want to download and then parse it.
Who knows how to parse it directly? I Just need to read the contents into a database.
Thanks.I want to parse xml files from a normal FTP Servers , NOT the sap application severs itself. How can i do that?
I know how to use the SAPFTP getting and putting files ,but I don't want to download and then parse it.
Who knows how to parse it directly? I Just need to read the contents into a database.
Thanks. -
How to compare after parsing xml file
Hi,
following code, parse the input.xml file, counts how many nodes are there and writes the node name and its value on screen.
1) i am having trouble writing only node name into another file instead of writing to screen.
2) after parsing, i like to compare each node name with another .xsd file for existence.
Please keep in mind that, input.xml is based on some other .xsd and after parsing i have comparing its tag with another .xsd
Need you help guys.
thanks
* CompareTags.java
import java.io.*;
import org.w3c.dom.*;
import org.xml.sax.*;
import javax.xml.parsers.*;
import javax.xml.transform.*;
import javax.xml.transform.dom.*;
import javax.xml.transform.stream.*;
/** This class represents short example how to parse XML file,
* get XML nodes values and its values.<br><br>
* It implements method to save XML document to XML file too
public class CompareTags {
private final static String xmlFileName = "C:/input.xml";
int totalelements = 0;
/** Creates a new instance of ParseXMLFile */
public CompareTags() {
// parse XML file -> XML document will be build
Document doc = parseFile(xmlFileName);
// get root node of xml tree structure
Node root = doc.getDocumentElement();
// write node and its child nodes into System.out
System.out.println("Statemend of XML document...");
writeDocumentToOutput(root,0);
System.out.println("totalelements in xyz tag " + totalelements);
System.out.println("... end of statement");
/** Returns element value
* @param elem element (it is XML tag)
* @return Element value otherwise empty String
public final static String getElementValue( Node elem ) {
Node kid;
if( elem != null){
if (elem.hasChildNodes()){
for( kid = elem.getFirstChild(); kid != null; kid = kid.getNextSibling() ){
if( kid.getNodeType() == Node.TEXT_NODE ){
return kid.getNodeValue();
return "";
private String getIndentSpaces(int indent) {
StringBuffer buffer = new StringBuffer();
for (int i = 0; i < indent; i++) {
buffer.append(" ");
return buffer.toString();
/** Writes node and all child nodes into System.out
* @param node XML node from from XML tree wrom which will output statement start
* @param indent number of spaces used to indent output
public void writeDocumentToOutput(Node node,int indent) {
// get element name
String nodeName = node.getNodeName();
// get element value
String nodeValue = getElementValue(node);
// get attributes of element
NamedNodeMap attributes = node.getAttributes();
System.out.println(getIndentSpaces(indent) + "NodeName: " + nodeName + ", NodeValue: " + nodeValue);
for (int i = 0; i < attributes.getLength(); i++) {
Node attribute = attributes.item(i);
System.out.println(getIndentSpaces(indent + 2) + "AttributeName: " + attribute.getNodeName() + ", attributeValue: " + attribute.getNodeValue());
// write all child nodes recursively
NodeList children = node.getChildNodes();
//int totalelements = 0;
for (int i = 0; i < children.getLength(); i++) {
Node child = children.item(i);
// System.out.println("child value.."+child);
if (child.getNodeType() == Node.ELEMENT_NODE) {
writeDocumentToOutput(child,indent + 2);
if(node.getNodeName() == "DATA"){
totalelements = totalelements+1;}
//System.out.println("totalelements in DATA tag " + totalelements);
/** Parses XML file and returns XML document.
* @param fileName XML file to parse
* @return XML document or <B>null</B> if error occured
public Document parseFile(String fileName) {
System.out.println("Parsing XML file... " + fileName);
DocumentBuilder docBuilder;
Document doc = null;
DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance();
docBuilderFactory.setIgnoringElementContentWhitespace(true);
try {
docBuilder = docBuilderFactory.newDocumentBuilder();
catch (ParserConfigurationException e) {
System.out.println("Wrong parser configuration: " + e.getMessage());
return null;
File sourceFile = new File(fileName);
try {
doc = docBuilder.parse(sourceFile);
catch (SAXException e) {
System.out.println("Wrong XML file structure: " + e.getMessage());
return null;
catch (IOException e) {
System.out.println("Could not read source file: " + e.getMessage());
System.out.println("XML file parsed");
return doc;
/** Starts XML parsing example
* @param args the command line arguments
public static void main(String[] args) {
new CompareTags();
}hi,
check out the following links
Check this blog to extract from XML:
/people/kamaljeet.kharbanda/blog/2005/09/16/xi-bi-integration
http://help.sap.com/saphelp_nw04/helpdata/en/fe/65d03b3f34d172e10000000a11402f/frameset.htm
Check thi link for Extract from any DB:
http://help.sap.com/saphelp_nw04s/helpdata/en/58/54f9c1562d104c9465dabd816f3f24/content.htm
regards
harikrishna N -
Loading and unloading xml galleries
I have a several galleries that I will be loading via several xml files. Gallery1 will load on start and the other galleries will load through buttons using their instance names (i.e. "gallery3" button will load "gallery3.xml"). Currently I have a function + listener (called "home") to initiate gallery1 on start, a function + listener (called "goSection") to initiate the other galleries via button instance name, and a function that loads the gallery (called "fileLoaded") with the listener located in the "home" and "goSection" functions. There is a lot more code in the fileLoaded function that controls the thumbnail and full size images functionality that I am excluding because its probably not necessary for my problem. Im not sure the most efficient way to set this all up so I unload the existing gallery before I load a new gallery. Ive tried to use removeChild and removeEventListener on urlLoader without much success. Any suggestions? ...
//BUTTONS
var sButtons:Array = [gallery1,gallery2,gallery3,gallery4];
function sButtonsListeners():void {
for (var i:uint = 0; i < sButtons.length; i++) {
sButtons[i].addEventListener(MouseEvent.CLICK, goSection);
sButtonsListeners();
var urlLoader:URLLoader = new URLLoader();
//INIT HOME
function home():void {
trace("gallery1 loaded");
//load external xml
var urlRequest:URLRequest = new URLRequest("gallery1.xml");
urlLoader.load(urlRequest);
urlLoader.addEventListener(Event.COMPLETE,fileLoaded);
home();
//GO SECTION
function goSection(event:Event):void {
trace(instanceName + " loaded");
var instanceName:String = event.currentTarget.name;
//load external xml
var urlRequest:URLRequest = new URLRequest(instanceName + ".xml");
urlLoader.load(urlRequest);
urlLoader.addEventListener(Event.COMPLETE,fileLoaded);
function fileLoaded(event:Event):void {
var myXML:XML = new XML();
var xmlList:XMLList;
myXML.ignoreWhitespace = true;
var arrayURL:Array = new Array(); //thumbnails
var arrayName:Array = new Array(); //large photos
var holderArray:Array = new Array(); //thumbnail holder
var thumb:Thumbnail; //represents Thumbnail.AS
//represents the gallery container
var sprite:Sprite = new Sprite();
addChild(sprite);
//thumbnail container
var thumbsHolder:Sprite = new Sprite();
sprite.addChild(thumbsHolder);
//image container
var imageHolder:Sprite = new Sprite();
sprite.addChild(imageHolder);
//load image
var imageLoader:UILoader = new UILoader();
imageLoader.buttonMode = true;
imageHolder.addChild(imageLoader);
myXML = XML(event.target.data);
xmlList = myXML.children();
for (var i:int=0; i<xmlList.length(); i++) {
var picURL:String = xmlList[i].url;
var picName:String = xmlList[i].big_url;
arrayURL.push(picURL);
arrayName.push(picName);
holderArray[i] = new Thumbnail(arrayURL[i],i,arrayName[i]);
holderArray[i].name = arrayName[i];
holderArray[i].buttonMode = true;
holderArray[i].y = 25;
holderArray[i].x = i * 87 + 142;
thumbsHolder.addChild(holderArray[i]);Anyone? My biggest concern is unloading the existing gallery before I load a new one. Currently they load on top of each other.
-
Problem with whitespace then loading and saving xml
i do not know how to handle this problem. i modifed a texteditor to send XML to a server and load XML back to the container.
but then i do changes to the Textlayout it shows up like this --->
Text in Container not modifed
Text in Container modifed ---> with space beween the colorchanged string
Text inContainersend and loaded ---> i think this has something to to with the
TextFilter.export(_textFlow,TextFilter.TEXT_LAYOUT_FORMAT,ConversionType.XML_TYPE)
can someone give me a hint...Hi,
the link is --->
http://www.horstmann-architekten.de/contentmanagment/SimpleEditor.html
its a modified example of the texteditor provided by Adobe. You can send a xml to the server. and also read it from the server. You just use the xml identifer to give the xml a name.
Try it out:
1. change the text and
2. give a XML-Identifer
and then send it to the server. --> send to server
3. type in the XML-Identifer you have used and
4. load it from the server ---> Load from Server Button
evering works ok exept the columns formating.
I Think the colums Formating is not embeded in the XML as it should be. I attached the Files. (Newbie programmer)
With best regards
Michael Sprinzl
--- robin.briggs <[email protected]> schrieb am Do, 17.9.2009:
Von: robin.briggs <[email protected]>
Betreff: Problem with whitespace then loading and saving xml
An: "Michael sprinzl" <[email protected]>
Datum: Donnerstag, 17. September 2009, 2:12
Sounds like you have two different issues going on: (1) inline graphics aren't coming out correctly when you use the TextLineFactory, and (2) columns aren't working correctly. It's difficult for me to tell by looking at the application you link what is going wrong. One of the examples does seem to have columns working -- can you be more specific about what you're doing, and what results you are seeing? As for the inline graphics, there is a timing issue involved with using URLs, due to the asynchronous loading. See this comment in the docs for TextFlowTextLineFactory:
Note: When using inline graphics, the source property of the InlineGraphicElement object must either be an instance of a DisplayObject or a Class object representing an embedded asset. URLRequest objects cannot be used. The width and height of the inline graphic at the time the line is created is used to compose the flow.
- robin -
How to parse xml file in midlet
Hi Guys,
i wish to parse xml file and display it in my midlet. i found api's supporting xml parsing in j2se ie., in java.net or j2se 5.0. Can u please help me what package to use in midlet?
how to parse xml info and display in midlet? Plz reply soon......Thanks in advance....i have exactly the same problem with KXml2, but using a j2me-polish netbeans project.
i've tried to work around with similar ways like you, but none of them worked. now i've spent 3 days for solving this problem, i'm a bit disappointed :( what is wrong with setting the downloaded kxml2 jar path in libraries&resources?
screenshot -
Hi
Anyone know about support for parsing XML files in LabVIEW?
(I mean specific XML support, I'm familiar with LabVIEWs file functions)
regards
Jan
Sent via Deja.com http://www.deja.com/
Before you buy.I assume you are referring to:
http://www.savarese.org/oro/software/OROMatcher1.1.html
Have you considered asking Savarese?
Peace,
Cameron Purdy
Tangosol, Inc.
http://www.tangosol.com
+1.617.623.5782
WebLogic Consulting Available
"Laurent Mentek" <[email protected]> wrote in message
news:[email protected]..
Hi all,
I'm started to develop with BEA WebLogic and I use ORACLE 8.1.6
database.
We need to map some XML tags as metadata in the database.
Here is a concrete example with part of our XML files:
XML files :
<target>EDU</target>
<question>
<para>
Please could you provide some references on nutritional status in
the frail elderly?
</para>
</question>
I use OROMatcher to parse xml files and it work fine.
I can extract every element in line with success , but don't extract the
value in <para> tag, for example.
I don't no how to use the MULTILINE_MASK option and the ^ or $ to get
this line.
Anyone could give me an example of metadatas extaction using or no the
MULTILINE_MASK option?
Thanks a lot for your help.
Laurent. -
Hello All,
There is a requirement for parsing of XML files to ABAP.
1.How do we pick an XML file from Application server and also from FTP server?
2.After picking the XML file how to parse that XML file to process it to create material master?Hi,
Ur scenario is File to R/3
For creating material master ..i guess there is IDoc named MATMAS.
U can make use of it and execute File to IDoc Scenario.
link for File to IDoc--
https://www.sdn.sap.com/irj/scn/wiki?path=/display/xi/fileToIDOC&
U need to pick XML file from FTP server...No need to parse XML file...just create data type which represents ur xml file structure and map it to IDoc fields.
regards,
Manisha
Maybe you are looking for
-
Warning on xPath request in Flex4 when fine with Flex3
I'm upgrating from Flex 3 to Flex 4. Under Flex 3 I had no problem and no compilation error nor warning. On the following binding code: <mx:Binding source="this.model.appViewModel.appVO.translations.translation.(@language == this.model.appViewModel.a
-
HT4623 Can I move a purchased album from my ipad mini to my iphone 4s?
Can I move a purchased Album from my ipad mini to my iphone 4s?
-
Parameters....formal and actual parameters...
when we need parameters, the concept of formal and acutal perameters with simple examples...pl
-
CiscoSecure ACS 3.3 and MS Active Directory ?
We just got and installed CiscoSecure ACS 3.3 on a domain controller for our MS active directory domain. ACS seems to work with AD in the sense that it uses the usernames and passwords contained in AD for users. However I noticed it does not seem to
-
I downloaded a song to from iTunes, but even after the download is complete it only plays one second of the song and then it ends. Any ideas?