XML parser to parse XML inside HTML file
Hi,
I wish to know is there any other parsers apart from JAXP to parse xml content present inside HTML file. For example,
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
</head>
<body>
<form id="j_id_jsp_1394907664_1" name="j_id_jsp_1394907664_1" method="post" action="/msaiphoneportal1.1c/pages/xmlchech.faces;jsessionid=5666F0E1CF0E44B978940F021012AA41" enctype="application/x-www-form-urlencoded">
<input type="hidden" name="j_id_jsp_1394907664_1" value="j_id_jsp_1394907664_1" />
<?xml version="1.0" encoding="UTF-8"?>
<hospital>
<Users>
<User id="1" password="x" type="staff" username="x"/>
<User id="2" password="y" type="staff" username="y"/>
<User id="3" password="z" type="staff" username="z"/>
</Users>
<Survey/>
<Patients>staaatus</Patients>
</hospital>
<input type="hidden" name="j_id_jsp_1394907664_1:j_id_jsp_1394907664_2" /><input type="hidden" name="javax.faces.ViewState" id="javax.faces.ViewState" value="-4298162632826268059:-1507671971163298623" autocomplete="off" />
</form>
</body>
</html>
I need to read the XML content inside. Is there any way please let me know
Edited by: DHURAI on Jul 22, 2010 12:59 AM
DHURAI wrote:
while reading, we can fetch the starting of XML through <?xml> tag, but how we know the ending of the XML as it seems to be dynamic.1) Extract the document root element which follows the <?xml ... ?>
2) From this root element , construct the associated root element terminal by inserting a / after the <.
3) Search for the terminal.
If the root name can also be the name of an enclosed element then you will have to count the number of terminals.
Similar Messages
-
Dreamweaver CC, how to get php coloring inside html files
Before I could do it by changing the extension.txt file. Now when I try to change the file extension.txt I can't save it but I get an access denied error.
I am running with administrative privileges.
Any ideas?Sorry, I did not explain myself.
Before I used to be able to tweak the configuration file from DW (extensions.txt) and Dreamweaver would color the php code that was contained inside an html files.
I need the code coloring to apply in files with extension html.
I hope I am more clear now. And yes, @Rob Hecker2 you areright, I see now that it was very lousy explained -
Regular Expressions inside html file
i'm doing some report genearting tool. the template file is in the form of a html file. and i need to add some values from a database to the file in to some specific places which are marked by spcial tags defined by me.
any way thats not the issue. i read the whole html to a string and then i want to check for those tags.
can anyone just tell me what is regular expession for searching this tag.
(Only one occurance of a tag of specific type is there in the file )
this is the tag <!--data><!-->
thanks in advanceprivate String html = "";
private StringBuffer sb;
public generateReportUser() {
try {
BufferedReader fileIn = new BufferedReader(new FileReader("E:\\BCSProj\\templates\\tmpUserReport.htm"));
String s;
while ((s = fileIn.readLine()) != null) {
// html += s;
html += s + "\n"; //this might be better
} catch (Exception e) {
e.printStackTrace();
System.out.println(html);
fileIn.close();
Pattern p = Pattern.compile("(<!--data>)(<!-->)");
Matcher m = p.matcher(html);
sb = new StringBuffer();
while (m.find){
// "The Data" part can be dynamic
m.appendReplacement(sb, m.group(1) + "The Data" + m.group(2));
// m.appendReplacement(sb, "The Data"); //simple replacement
m.appendTail(sb);
System.out.println(new String(sb));
/* They are quite nonsense
//check the mathes found this is always false for me
System.out.println(m.matches());
//just checking parting the string
if (m.matches()) {
int i = m.groupCount();
for (int j=0;j<i;j++) {
System.out.println(m.group(j+1));
System.out.println("***********");
sb = new StringBuffer(html.trim());
} -
Module processing inside Sender File Adapter
Hello,
I am trying to analyze whether I can create a specialized module inside Sender File Adapter. As of right now, the Sender File Adapter and Receiver as well, assume endSeparator character in the end of each record. For files that do not have this field, it is just on continuous string, I assumed I can create an
adapter module
call it BEFORE data in the file is being converted to XML format
Insert 'nl' character (since the record length is fixed)
Call regular adapter processing (converting to/from XML)
However, creating any module inside Sender File Adapter, the payload of the main document is already in XML format. Is there anyway to avoid it?
Thanks for your help,
Dmitriy MindichIt is not possible with the standard functionality.
So maintain the sender file adapter with no conversion, but in the module tab enter following modules:
1. Your module
2. The conversion module (*)
3. The standard module.
(*) for details look here:
Look here:
http://service.sap.com/nw-howtoguides
-> Exchange Infrastructure
-> How To Use the Content Conversion Module in JMS Adapter
Regards
Stefan -
JAXB parsing an incomplete xml file
hi folks,
i am trying to parse a incomplete xml file (e.g some attribute and child elements are missing) in order to complete it via jaxb. however, parsing throws a SAXParseException (premature end of file), which interally is marked as unrecoverable, and a unmarshaller isn't capable of returning a result. not even the objects created so far.
so my question is if there a way of getting the (incomplete) object tree no matter if the parsing was successfully or not. (i am aware of the fact, that this object tree might be invalid)
cheer, johannesThanks, works like a charm :)
Another question.
I have an index.jsp page with an HTML form (a simple "search" form, made of a text area and a submit button). Now, what I want to do is passing the parameter to two distinct servlets, each one dealing with a web service (one with ebay, the other one with last.fm).
Unfortunately, in the action tag of the form only one value can be specified.
Any suggestions? -
Couldn't parse image from XML file using NSXMLParser
Hi all, Since i am newbie to developing iPhone application, i have problem in parsing XML data.
I use the following code for parsing XML file, this is RootViewController.h file
#import <UIKit/UIKit.h>
#import "SlideMenuView.h"
#define kNameValueTag 1
#define kColorValueTag 2
#define kSwitchTag 100
@class DetailViewController;
@interface RootViewController : UIViewController <UITableViewDataSource, UITableViewDelegate> {
DetailViewController *detailViewController;
UITableView *myTable;
UIActivityIndicatorView *activityIndicator;
UIButton *btn;
CGSize cellSize;
NSXMLParser *rssParser;
NSMutableArray *stories;
NSMutableDictionary *item;
NSString *currentElement;
NSMutableString *currentTitle, *currentDate, *currentSummary, *currentLink, *currentImage;
SlideMenuView *slideMenu;
NSMutableArray *buttonArray;
UIButton *rubic;
UIButton *buurt;
UIButton *beeld;
UILabel *lbl;
NSString *url;
@property (nonatomic, retain) UITableView *myTable;
@property (nonatomic, retain) DetailViewController *detailViewController;
@property (nonatomic, retain) SlideMenuView *slideMenu;
@property (nonatomic, retain) UIButton *btn;
@property (nonatomic, retain) NSMutableArray *buttonArray;
@property (nonatomic, retain) UIButton *rubic;
@property (nonatomic, retain) UIButton *buurt;
@property (nonatomic, retain) UIButton *beeld;
@property (nonatomic, retain) UILabel *lbl;
@end
below is the RootViewController.m file,
#import <Foundation/Foundation.h>
#import "RootViewController.h"
#import "DetailViewController.h"
#import "SlideMenuView.h"
@implementation RootViewController
@synthesize rubic, buurt, beeld, detailViewController, myTable, btn, buttonArray, slideMenu, lbl;
- (void)parseXMLFileAtURL:(NSString *)URL {
stories = [[NSMutableArray alloc] init];
//you must then convert the path to a proper NSURL or it won't work
NSURL *xmlURL = [NSURL URLWithString:URL];
// here, for some reason you have to use NSClassFromString when trying to alloc NSXMLParser, otherwise you will get an object not found error
// this may be necessary only for the toolchain
rssParser = [[NSXMLParser alloc] initWithContentsOfURL:xmlURL];
// Set self as the delegate of the parser so that it will receive the parser delegate methods callbacks.
[rssParser setDelegate:self];
// Depending on the XML document you're parsing, you may want to enable these features of NSXMLParser.
[rssParser setShouldProcessNamespaces:NO];
[rssParser setShouldReportNamespacePrefixes:NO];
[rssParser setShouldResolveExternalEntities:NO];
[rssParser parse];
- (void)parser:(NSXMLParser *)parser parseErrorOccurred:(NSError *)parseError {
NSString * errorString = [NSString stringWithFormat:@"Unable to download story feed from web site (Error code %i )", [parseError code]];
NSLog(@"error parsing XML: %@", errorString);
UIAlertView * errorAlert = [[UIAlertView alloc] initWithTitle:@"Error loading content" message:errorString delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
[errorAlert show];
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict{
//NSLog(@"found this element: %@", elementName);
currentElement = [elementName copy];
if ([elementName isEqualToString:@"item"]) {
// clear out our story item caches...
item = [[NSMutableDictionary alloc] init];
currentTitle = [[NSMutableString alloc] init];
currentDate = [[NSMutableString alloc] init];
currentSummary = [[NSMutableString alloc] init];
currentLink = [[NSMutableString alloc] init];
currentImage = [[NSMutableString alloc] init];
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName{
//NSLog(@"ended element: %@", elementName);
if ([elementName isEqualToString:@"item"]) {
// save values to an item, then store that item into the array...
[item setObject:currentTitle forKey:@"title"];
[item setObject:currentSummary forKey:@"summary"];
[item setObject:currentDate forKey:@"date"];
[item setObject:currentImage forKey:@"enclosure"];
[stories addObject:[item copy]];
NSLog(@"adding story: %@", currentTitle);
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string{
//NSLog(@"found characters: %@", string);
// save the characters for the current item...
if ([currentElement isEqualToString:@"title"]) {
[currentTitle appendString:string];
} else if ([currentElement isEqualToString:@"description"]) {
[currentSummary appendString:string];
} else if ([currentElement isEqualToString:@"pubDate"]) {
[currentDate appendString:string];
} else if ([currentElement isEqualToString:@"enclosure"]) {
[currentImage appendString:string];
- (void)parserDidEndDocument:(NSXMLParser *)parser {
[activityIndicator stopAnimating];
[activityIndicator removeFromSuperview];
NSLog(@"all done!");
NSLog(@"stories array has %d items", [stories count]);
[myTable reloadData];
- (void)loadView {
//self.title = @"GVA_iPhone";
//UIImage *img = [UIImage imageNamed: @"gva_v2.1.png"];
CGRect frame = [[UIScreen mainScreen] bounds];
UIView *aView = [[UIView alloc] initWithFrame:frame];
aView.backgroundColor = [UIColor grayColor];
self.view = aView;
[aView release];
lbl = [[UILabel alloc] initWithFrame:CGRectMake(0.0, 33.0, 320.0, 30.0)];
lbl.backgroundColor = [UIColor colorWithRed:21.0/255.0 green:113.0/255.0 blue:194.0/255.0 alpha:1.0];
lbl.textColor = [UIColor whiteColor];
lbl.font = [UIFont boldSystemFontOfSize:18.0];
[self.view addSubview:lbl];
[lbl release];
buttonArray = [[NSMutableArray alloc] init];
for(int i = 1; i < 4; i++)
// Rounded rect is nice
//UIButton *btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];
btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];
// Give the buttons a width of 100 and a height of 30. The slide menu will take care of positioning the buttons.
// If you don't know that 100 will be enough, use my function to calculate the length of a string. You find it on my blog.
[btn setFrame:CGRectMake(0.0f,3.0f, 120.0f, 30.0f)];
switch(i){
case 1:
[btn setTitle:[NSString stringWithFormat:@" Snel", i+1] forState:UIControlStateNormal];
[btn setBackgroundImage:[UIImage imageNamed:@"topbg02.png"] forState:UIControlStateNormal];
lbl.text = @" Snel";
[btn addTarget:self action:@selector(buttonPressed:) forControlEvents:UIControlEventTouchUpInside];
[buttonArray addObject:btn];
break;
case 2:
[btn setTitle:[NSString stringWithFormat:@" Binnenland", i+1] forState:UIControlStateNormal];
[btn setBackgroundImage:[UIImage imageNamed:@"topbg02.png"] forState:UIControlStateNormal];
[btn addTarget:self action:@selector(buttonClicked:) forControlEvents:UIControlEventTouchUpInside];
[buttonArray addObject:btn];
break;
case 3:
[btn setTitle:[NSString stringWithFormat:@" Buitenland", i+1] forState:UIControlStateNormal];
[btn setBackgroundImage:[UIImage imageNamed:@"topbg02.png"] forState:UIControlStateNormal];
[btn addTarget:self action:@selector(buttonTouched:) forControlEvents:UIControlEventTouchUpInside];
[buttonArray addObject:btn];
break;
[btn release];
slideMenu = [[SlideMenuView alloc]initWithFrameColorAndButtons:CGRectMake(0.0, 3.0, 330.0, 30.0) backgroundColor:[UIColor blackColor] buttons:buttonArray];
[self.view addSubview:slideMenu];
UITableView *aTableView = [[UITableView alloc] initWithFrame:CGRectMake(0.0, 63.0, 320.0, 310.0)];
aTableView.dataSource = self;
aTableView.delegate = self;
aTableView.rowHeight = 120;
self.myTable = aTableView;
[aTableView release];
[self.view addSubview:myTable];
rubic = [[UIButton alloc]initWithFrame:CGRectMake(0.0, 370.0, 105.0, 50.0)];
[rubic setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
[rubic setBackgroundImage:[UIImage imageNamed:@"MOUSEOVER.png"] forState:UIControlStateNormal];
[rubic addTarget:self action:@selector(buttonBinn:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:rubic];
UILabel *lblRub = [[UILabel alloc]initWithFrame:CGRectMake(10.0, 385.0, 45.0, 12.0)];
lblRub.text = @"Rubriek";
lblRub.font = [UIFont boldSystemFontOfSize:11.0];
lblRub.backgroundColor = [UIColor clearColor];
lblRub.textColor = [UIColor whiteColor];
[self.view addSubview:lblRub];
UIImageView *imgCat = [[UIImageView alloc] initWithFrame:CGRectMake(58.0, 375.0, 39.0, 36.0)];
imgCat.image = [UIImage imageNamed:@"category_icon.png"];
[self.view addSubview:imgCat];
buurt = [[UIButton alloc] initWithFrame:CGRectMake(105.0, 370.0, 108.0, 50.0)];
[buurt setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
[buurt setBackgroundImage:[UIImage imageNamed:@"bottombg01.png"] forState:UIControlStateNormal];
[buurt addTarget:self action:@selector(buttonBuurt:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:buurt];
UILabel *lblGlo = [[UILabel alloc]initWithFrame:CGRectMake(112.0, 385.0, 59.0, 12.0)];
lblGlo.text = @"In de Buurt";
lblGlo.font = [UIFont boldSystemFontOfSize:11.0];
lblGlo.backgroundColor = [UIColor clearColor];
lblGlo.textColor = [UIColor whiteColor];
[self.view addSubview:lblGlo];
UIImageView *imgGlo = [[UIImageView alloc] initWithFrame:CGRectMake(173.0, 375.0, 39.0, 36.0)];
imgGlo.image = [UIImage imageNamed:@"globe_icon.png"];
[self.view addSubview:imgGlo];
beeld = [[UIButton alloc]initWithFrame:CGRectMake(213.0, 370.0, 108.0, 50.0)];
[beeld setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
[beeld setBackgroundImage:[UIImage imageNamed:@"bottombg01.png"] forState:UIControlStateNormal];
[beeld addTarget:self action:@selector(buttonBeeld:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:beeld];
UILabel *lblCam = [[UILabel alloc]initWithFrame:CGRectMake(228.0, 385.0, 45.0, 12.0)];
lblCam.text = @"In Beeld";
lblCam.font = [UIFont boldSystemFontOfSize:11.0];
lblCam.backgroundColor = [UIColor clearColor];
lblCam.textColor = [UIColor whiteColor];
[self.view addSubview:lblCam];
UIImageView *imgCam = [[UIImageView alloc] initWithFrame:CGRectMake(276.0, 375.0, 39.0, 36.0)];
imgCam.image = [UIImage imageNamed:@"camera_icon.png"];
[self.view addSubview:imgCam];
if([stories count] == 0) {
[self parseXMLFileAtURL:@"http://iphone.concentra.exuvis.com/feed/rss/article/2/binnenland.xml"];
cellSize = CGSizeMake([myTable bounds].size.width,60);
- (IBAction)buttonPressed:(id)sender {
lbl.text = ((UIButton*)sender).currentTitle;
- (IBAction)buttonClicked:(id)sender {
lbl.text = ((UIButton*)sender).currentTitle;
- (IBAction)buttonTouched:(id)sender {
lbl.text = ((UIButton*)sender).currentTitle;
-(void)buttonBinn:(id)sender
[rubic setBackgroundImage:[UIImage imageNamed:@"MOUSEOVER.png"] forState:UIControlStateNormal];
[buurt setBackgroundImage:[UIImage imageNamed:@"bottombg01.png"] forState:UIControlStateNormal];
[beeld setBackgroundImage:[UIImage imageNamed:@"bottombg01.png"] forState:UIControlStateNormal];
-(void)buttonBuurt:(id)sender
[buurt setBackgroundImage:[UIImage imageNamed:@"MOUSEOVER.png"] forState:UIControlStateNormal];
[beeld setBackgroundImage:[UIImage imageNamed:@"bottombg01.png"] forState:UIControlStateNormal];
[rubic setBackgroundImage:[UIImage imageNamed:@"bottombg01.png"] forState:UIControlStateNormal];
-(void)buttonBeeld:(id)sender
[beeld setBackgroundImage:[UIImage imageNamed:@"MOUSEOVER.png"] forState:UIControlStateNormal];
[rubic setBackgroundImage:[UIImage imageNamed:@"bottombg01.png"] forState:UIControlStateNormal];
[buurt setBackgroundImage:[UIImage imageNamed:@"bottombg01.png"] forState:UIControlStateNormal];
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
// Return YES for supported orientations
return (interfaceOrientation == UIInterfaceOrientationPortrait);
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning]; // Releases the view if it doesn't have a superview
// Release anything that's not essential, such as cached data
- (void)dealloc {
[myTable release];
[detailViewController release];
[super dealloc];
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
return 1;
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
return [stories count];
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"GVAiPhone"];
if (cell == nil) {
//CGRect cellFrame = CGRectMake(0, 0, 300, 65);
cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:@"GVAiPhone"] autorelease];
//cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
//cell.accessoryView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"arrow_icon.png"]];
CGRect nameValueRect = CGRectMake(5, 5, 275, 35);
UILabel *nameValue = [[UILabel alloc] initWithFrame:nameValueRect];
nameValue.tag = kNameValueTag;
nameValue.font = [UIFont fontWithName:@"Arial" size:15.0];
nameValue.lineBreakMode = UILineBreakModeWordWrap;
nameValue.numberOfLines = 2;
[cell.contentView addSubview:nameValue];
[nameValue release];
CGRect colorValueRect = CGRectMake(5, 38, 275, 65);
UILabel *colorValue = [[UILabel alloc] initWithFrame:colorValueRect];
colorValue.tag = kColorValueTag;
colorValue.font = [UIFont fontWithName:@"Arial" size:11.0];
colorValue.textColor = [UIColor colorWithRed:130.0/255.0 green:135.0/255.0 blue:139.0/255.0 alpha:1.0];
colorValue.lineBreakMode = UILineBreakModeWordWrap;
colorValue.textAlignment = UITextAlignmentLeft;
colorValue.numberOfLines = 6;
[cell.contentView addSubview:colorValue];
[colorValue release];
// Set up the cell
//cell.text = [theSimpsons objectAtIndex:indexPath.row];
//cell.hidesAccessoryWhenEditing = YES;
NSUInteger storyIndex = [indexPath row];
NSDictionary *rowData = [stories objectAtIndex:storyIndex];
UILabel *name = (UILabel *)[cell.contentView viewWithTag:kNameValueTag];
name.text = [rowData objectForKey:@"title"];
//name.lineBreakMode;
//UIImage *image =[UIImage imageNamed: currentImage];imageWithContentsOfFile
//image.size.width = 50;
//iimage.size.height = 50;
//cell.image = [UIImage imageNamed:currentImage];
cell.accessoryView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"arrow_icon.png"]];
UILabel *color = (UILabel *)[cell.contentView viewWithTag:kColorValueTag];
color.text = [rowData objectForKey:@"summary"];
return cell;
@end
- here the actual problem is the xml node <enclosure> contains images but in using the method "didEndElement" , it doesn't parse into the <enclosure> node. ya so please help me in parsing and getting the image.
Waiting for your help !!
-SathiyaHi, how did you solve your problem in detail. I'm having the same problem with this rss-feed: www.spiegel.de/index.rss
I cannot parse the url of the images. I'm looking forward to your answer. -
How can I parse an XML string, (not an XML file)?
Hi,
I am using Xerces2 Java Parser 2.4.0,
I wanta parse an XML string, not an XML file, but
in the Parser class there is only following methods:
parse(InputSource source)
parse(java.lang.String systemId)
thankshi
InputSource is = new InputSource(new ByteArrayInputStream(xmlSrc.getBytes()));
HTH
vasanth-ct -
How to parse contents from XML file in Java
Hi All,
I have a scenario like this . I have one xml file with key value pairs of ( name , URL ) . I have retrieved contents from XML file , now I want to parse these contents and store in a bean object.
How to parse Contents of XML file??
Thanks in advance,
Rajendra.Hi All,
I have a scenario like this . I have one xml file with key value pairs of ( name , URL ) . I have retrieved contents from XML file , now I want to parse these contents and store in a bean object.
How to parse Contents of XML file??
Thanks in advance,
Rajendra. -
Sax Parser for loading XML file
We have a requirment by which we need to load huge XMl file in our DB everyday.
THe XML file format is like --
<?xml version="1.0" encoding="UTF-8"?>
<root>
<emp>
<ename>aaa</ename>
<sal>3000</sal>
</emp>
<emp>
<ename>bbb</ename>
<sal>5000</sal>
</emp>
<dept>
<name>productiong</name>
<location>USA</location>
<dept>
I have written XMl SAX parser to load this file into DB -
import org.xml.sax.helpers.DefaultHandler;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import org.xml.sax.XMLReader;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import org.xml.sax.Attributes;
import java.io.*;
import java.sql.*;
import oracle.jdbc.driver.*;
import oracle.xml.sql.*;
import oracle.sql.*;
import oracle.jdbc.*;
import oracle.jdbc.pool.OracleDataSource;
import java.util.*;
public class test extends DefaultHandler
String thisElement="";
String table_name="";
String table_name_2="";
String sql="";
String value_clause="";
StringBuffer value_clauseBuffer;
String Insert_sql="";
int flag;
String columnNames="";
String questionmarks="";
static String conStr = "jdbc:oracle:thin:@abcd1234:1521:dss501";
static Connection conn;
String arrayValues[] = new String[30];
int j = 0;
int emptyElementFlag = 0;
public SurveyReader() throws SQLException, FileNotFoundException, IOException{
DBConnect("username", "password");
public static void DBConnect(String username, String password)
throws SQLException, FileNotFoundException, IOException {
DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
conn = DriverManager.getConnection(conStr, username, password);
conn.setAutoCommit(true);
public void startElement(String namespaceURI, String localName,
String qName, Attributes atts) throws SAXException {
thisElement = qName;
if (thisElement!=table_name){
columnNames = columnNames + ", " + qName;
questionmarks = questionmarks +", " + "?";
emptyElementFlag =0;
public void characters(char[] ch, int start, int length)
throws SAXException {
if (thisElement !="root"){
if ((length == 0) && (thisElement !="") ){
table_name = thisElement;
sql = " Insert into "+ table_name +"(";
value_clause="";
value_clauseBuffer =null;
columnNames = "";
questionmarks ="";
j =0;
if ((length != 0) && (thisElement!="") && (thisElement!=table_name)){
emptyElementFlag = 1;
String s = new String(ch, start, length);
String newString = s.replaceAll("'", "''");
// String newString = s;
if (value_clauseBuffer== null){
value_clauseBuffer = new StringBuffer(newString);
else{
value_clauseBuffer.append(newString);
public void endElement(String namespaceURI, String localName, String qName)
throws SAXException {
if (thisElement !="root"){
if ((!(value_clauseBuffer == null))||((emptyElementFlag ==0) && (qName !=table_name))) {
try{
//value_clauseBuffer.append("', '");
if (value_clauseBuffer == null){
arrayValues[j]="";
else{
arrayValues[j]=""+value_clauseBuffer;
j = j+1;
value_clauseBuffer = null;
emptyElementFlag =0;
}catch(Exception e){
System.err.println(e);
System.exit(2);
if (qName == table_name){
if (!(value_clauseBuffer == null)){
value_clause = "'"+value_clauseBuffer;
columnNames =columnNames.substring(1, columnNames.length());
int paramNumber = j;
questionmarks =questionmarks.substring(1, questionmarks.length());
sql = sql + columnNames + " ) values (" + questionmarks +"); ";
Insert_sql=Insert_sql + sql;
sql = "Begin "+sql + " End; ";
try{
PreparedStatement pstat = conn.prepareStatement(sql);
for (int i=0; i<=j-1; i++ ){
int k = i+1;
pstat.setObject(k, arrayValues);
ResultSet rset = pstat.executeQuery();
rset.close();
pstat.close();
catch (Exception e) {
System.err.println(e);
System.out.print("sql " + sql);
System.exit(1);
table_name_2 = table_name;
thisElement = "";
public static void main (String args[]) {
XMLReader xmlReader = null;
System.out.println("Time " + new java.util.Date());
try {
SAXParserFactory spfactory = SAXParserFactory.newInstance();
spfactory.setValidating(false);
SAXParser saxParser = spfactory.newSAXParser();
xmlReader = saxParser.getXMLReader();
xmlReader.setContentHandler(new SurveyReader());
xmlReader.setErrorHandler(new SurveyReader());
InputSource source = new InputSource("short.xml");
xmlReader.parse(source);
conn.close();
} catch (Exception e) {
System.err.println(e);
System.exit(1);
This parser takes 2 hours to laod file of size around 8MB.
ANy suggestions on improving performance of the parser.
ANy other approach I should be taking to load this file into DB.
We are using ORacle 9i DB with Character set UTF 8.
Thanks!String buf = (new String(ch, start, length)).trim();
if (thisElement != "root"){
if ((buf.length() == 0) && (thisElement !="") ){
It run ok!
Thanks 58871!
Now, i want to export oracle table to xml file like :
<?xml version="1.0" encoding="UTF-8"?>
<root>
<emp>
<ename>aaa</ename>
<sal>3000</sal>
</emp>
<emp>
<ename>bbb</ename>
<sal>5000</sal>
</emp>
</root>
Can SAX export to xml format?
Pham Thanh Tung -
Non-blocking parsing of multiple xml files
Hi there,
I'm trying to parse multiple huge XML files concurrently for a query system over multiple xml streaming systems.
For each huge xml file, I read them into the memory gradually (the new data would cover the old data in the buffer if the buffer is full). Two questions here:
1. Do I have to set up a socket and write the buffered data to the socket in order to simuate that the parser can parse infinitely? It sounds not good to use socket across two threads just for the "infinite" nature.
2. I want to simulate concurrently parsing multiple streams. A straightforward way is to have each parser sit in a thread. Is there any otherway that I can put all parsers in one thread and alternately call them? This requires that each individual parser could parse whatever they have seen so far rather and resume when they are called again.
I'm curiously awaiting for your answers.
thanks a lot,
hongjust taking a guess: create your own reader by extending java.io.Reader ; and let this reader taking care of fetching the data that the parser will use.
-
Maximum XML file size that can parsed with c++ XML parser
Hi!
what is the maximum file size that can be parsed using the xml parser(version 1) for c++ on linux .
i'm getting an error(error no 231) when i try to parse an XML file of 3MB on Red Hat Linux 6.1
Regards
anjanamoving to xml db forum
-
XML parsing error: not well formed Location:file///c:users/
I have been trying to download tax info from the I.R.S site. When I try to open the downloads I get this error message:
XML parsing error: not well formed
Location: file///c:/Users/John/Downloads/available Transcripts.xhtml
line number 1, Column 9Are you sure that this is an XML file and not some other file type like PDF that got saved with the wrong file extension?
You can try to rename the file and change the file extension to .pdf to see if that works. -
XML Parsing From A String (Not a File)
Hi all,
I've been looking throughout this forum and still can't find a total answer to my question. I was wondering if it is possible to do the following:
I want to pass in a string of XML code to a java stored procedure; the XML string looking like the following (for example):
<Table-Name="PersonalInfo">
<row>
<First-Name>Bob</First-Name>
<Last-Name>Smith</Last-Name>
<Age>55</Age>
</row>
</Table-Name>
We don't want to be passing in an XML file; we want to pass in the actual string of XML code that would be in the file.
Is it possible to put into the DOM format (like every example I've seen so far) by parsing an XML formatted string? If so, how would I go about doing that?
Thanks in advance!
Jadie<Table-Name="PersonalInfo">
<row>
<First-Name>Bob</First-Name>
<Last-Name>Smith</Last-Name>
<Age>55</Age>
</row>
</Table-Name>This is exactly what JAXB is for! :)
With JAXB unmarshalling against an XSD file can be applied to any InputStream, etc.
Take a look at JAXB, and you'll find it'll be just what you're looking for. :)
In fact, here's a short segment of the XSD you'd write for the above:
<xsd:complexType name="PersonalInfo">
<xsd:sequence>
<xsd:element name="row" type="PersonalInfoRow" minOccurs="0" maxOccurs="unbounded"/>
<xsd:sequence>
</xsd:complexType>
<xsd:complexType name="PersonalInfoRow">
<xsd:sequence>
<xsd:element name="First-Name" type="xsd:string" minOccurs="1" maxOccurs="1"/>
<xsd:element name="Last-Name" type="xsd:string" minOccurs="1" maxOccurs="1"/>
<xsd:element name="Age" type="xsd:int" minOccurs="1" maxOccurs="1"/>
<xsd:sequence>
</xsd:complexType>
Also, perhaps redesign your XML a little, since each table will be different, simply use its name as the tags...i.e. <PersonalInfo></PersonalInfo> and change the <row> to <PersonalInfo> since <row> is pretty generic and will probably occur many times in other places.
Hope this helps you along your way. :)
-G -
Hi all,
i have a problem by solving an error in my code. The Code is mainly from Ian Darwin.
The code i am running works with j2sdk1.4.2_04. But now i have to bring it to work with jdk1.6.0_13.
The code parses xml documents. With small xml documents the code works. With large xml documents i get the following error while running the produced class file.
Exception in thread "main" java.lang.NullPointerException
at com.sun.org.apache.xerces.internal.dom.DeferredDocumentImpl.setChunkIndex(DeferredDocumentImpl.java:1944)
at com.sun.org.apache.xerces.internal.dom.DeferredDocumentImpl.appendChild(DeferredDocumentImpl.java:644)
at com.sun.org.apache.xerces.internal.parsers.AbstractDOMParser.characters(AbstractDOMParser.java:1191)
at com.sun.org.apache.xerces.internal.impl.dtd.XMLDTDValidator.characters(XMLDTDValidator.java:862)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:463)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:807)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:107)
at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:225)
at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:283)
at javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:208)
at XParse.parse(XParse.java:38)
at XParse$JFileChooserrv.<init>(XParse.java:119)
at XParse.main(XParse.java:213)
I know what a java.lang.NullPointerException mens. But i don't know where i have to look for. Specially i don't know what or where "com.sun.org.apache...." is.
Is there a package that a have to add to the environment? Can some one tell my where i can find this package?
I wrote the code for some years ago, 2006 or so. With the knew jdk1.6.0_13 some thinks chance in the environment. Couldn't find what exactly.
The code has only 215 lines, but some how i can't add it to this Message, because Maximum allowed is only 7500.
Is there an other Forum, which may is better for my question?Here is the code:
import java.io.*;
import javax.xml.parsers.*;
import org.w3c.dom.*;
import org.xml.sax.*;
import javax.swing.*;
import java.awt.event.*;
import java.io.*;
import java.util.*;
import javax.swing.*;
import java.awt.Container;
import javax.swing.JTextArea;
* This code is mainly from @author Ian Darwin, [email protected]
public class XParse {
/** Convert the file */
public static void parse(File file, boolean validate) {
try {
System.err.println("");
String fileName = file.getAbsolutePath();
System.err.println("Parsing " + fileName + "...");
// Make the document a URL so relative DTD works.
//String uri = new File(fileName).getAbsolutePath();
//System.err.println(uri);
DocumentBuilderFactory f = DocumentBuilderFactory.newInstance();
if (validate)
f.setValidating(true);
DocumentBuilder p = f.newDocumentBuilder();
p.setErrorHandler(new MyErrorHandler(System.err));
//XmlDocument doc = XmlDocument.createXMLDocument(file);
boolean vaild = p.isValidating();
if (vaild) {
System.out.println("yes parsing");
Document doc = p.parse(file); // <<<< ERROR
System.out.println("Parsed OK");
} catch (SAXParseException ex) {
System.err.println("+================================+");
System.err.println("| *SAX Parse Error* |");
System.err.println("+================================+");
System.err.println(ex.toString());
System.err.println("At line " + ex.getLineNumber());
System.err.println("+================================+");
} /**catch (RuntimeException ex) {
System.err.println("+================================+");
System.err.println("| *SAX Parse Error* |");
System.err.println("+================================+");
System.err.println(ex.toString());
//System.err.println("At line " + ex.getLineNumber());
//System.err.println("At line " + ex.getMessage());
System.err.println("+================================+");
}**/ catch (SAXException ex) {
System.err.println("+================================+");
System.err.println("| *SAX Error* |");
System.err.println("+================================+");
System.err.println(ex.toString());
System.err.println("+================================+");
/*}} catch (SAXNotRecognizedException ex) {
System.err.println(" no SAX");*/
} catch (ParserConfigurationException ex) {
System.err.println(" ???");
} catch (IOException ex) {
System.err.println("+================================+");
System.err.println("| *XML Error* |");
System.err.println("+================================+");
System.err.println(ex.toString());
private static class JFileChooserrv {
JFileChooserrv(JFrame f, boolean vverabreiten) {
String openfile;
String verror;
boolean validate = true;
final JFrame frame = f;
String vFilename = "Z:\\Boorberg\\parsen_vista\\daten";
//String vFilename = "C:\\";
File vFile = new File(vFilename);
final JFileChooser chooser = new JFileChooser(vFile);
JFileFilter filter = new JFileFilter();
filter.addType("xml");
filter.addType("sgml");
filter.addType("html");
filter.addType("java");
filter.setDescription("strukturfiles");
chooser.addChoosableFileFilter(filter);
boolean vjeas = true;
chooser.setMultiSelectionEnabled(vjeas);
int returnVal = chooser.showOpenDialog(frame);
if (returnVal == JFileChooser.APPROVE_OPTION) {
//Array filearry[] = chooser.getSelectedFiles();
//if (vFile = chooser.getSelectedFiles()) {
//File file[] = chooser.getSelectedFiles();
File vfile[] = chooser.getSelectedFiles();
//String openfile = new String();
int vlenght = vfile.length;
if (vlenght>1) {
int x=0;
while (x< vlenght) {
parse(vfile[x], validate);
x = x +1;
if (vlenght<=1) {
File v2file = chooser.getSelectedFile();
parse(v2file, validate);
} else {
System.out.println("You did not choose a filesystem object.");
System.exit(0);
private static class JFileFilter extends javax.swing.filechooser.FileFilter {
protected String description, vnew;
protected ArrayList<String> exts = new ArrayList<String>();
protected boolean vtrue;
public void addType(String s) {
exts.add(s);
/** Return true if the given file is accepted by this filter. */
public boolean accept(File f) {
// Little trick: if you don't do this, only directory names
// ending in one of the extentions appear in the window.
if (f.isDirectory()) {
return true;
} else if (f.isFile()) {
Iterator it = exts.iterator();
while (it.hasNext()) {
if (f.getName().endsWith((String)it.next()))
return true;
// A file that didn't match, or a weirdo (e.g. UNIX device file?).
return false;
/** Set the printable description of this filter. */
public void setDescription(String s) {
description = s;
/** Return the printable description of this filter. */
public String getDescription() {
return description;
private static class MyErrorHandler implements ErrorHandler {
// Error handler output goes here
private PrintStream out;
MyErrorHandler(PrintStream out) {
this.out = out;
* Returns a string describing parse exception details
private String getParseExceptionInfo(SAXParseException spe) {
String systemId = spe.getSystemId();
if (systemId == null) {
systemId = "null";
String info = "URI=" + systemId +
" Line=" + spe.getLineNumber() +
": " + spe.getMessage();
return info;
// The following methods are standard SAX ErrorHandler methods.
// See SAX documentation for more info.
public void warning(SAXParseException spe) throws SAXException {
//System.exit(0);
//out.println("Warning: " + getParseExceptionInfo(spe));
public void error(SAXParseException spe) throws SAXException {
//System.exit(0);
String message = "Error: " + getParseExceptionInfo(spe);
throw new SAXException(message);
public void fatalError(SAXParseException spe) throws SAXException {
//System.exit(0);
String message = "Fatal Error: " + getParseExceptionInfo(spe);
throw new SAXException(message);
public static void main(String[] av) {
JFrame vframe = new JFrame("chose files to pars");
boolean vverabreiten = true;
boolean validate = true;
JFileChooserrv vdateienwaehlen = new JFileChooserrv(vframe, vverabreiten);
}The Stack Trace i posted in the last Message. But i couldn't read it, i am not a programmer. -
Hi, I need to implemnt this for my project....
I need to combine XML and HTML file and generate a new HTML file
Sample XML File:
<user>
<txtName>sun</txtName>
<txtAge>21 </txtAge>
</user>
Sample HTML File:
<body>
Name: <input type="text" name="txtName" value=""
Age : <input type="text" Age="txtAge" value=""
</body>
I need a java program to combine the above xml and html files and generate the output in HTML.
Any kind of help is sincerely Appreciated.
Thanks.toucansam wrote:
So you want us to write it for you? It's pretty straight forward, first parse the xml file with the *[best java xml parser|http://www.google.com/search?&q=parsing+xml+in+java]* and then go through the nodes and construct the html with strings and concatination. Then write the file using *[the best java file writer|http://www.google.com/search?hl=en&q=writing+to+a+file+in+java]*.
He would do better to use existing tools that make this easy [http://www.ling.helsinki.fi/kit/2004k/ctl257/JavaXSLT/Ch05.html|http://www.ling.helsinki.fi/kit/2004k/ctl257/JavaXSLT/Ch05.html]
Maybe you are looking for
-
How do I pause an iCloud restore for app with large amounts of data?
I am using an iPhone app which is holding 10 Gb of data (media files) . Unfortunately, although all data was backed up, my iPhone 4 was faulty and needed to be replaced with a new handset. On restore, the 10Gb of data takes a very long time to restor
-
SUGGESTION TO ADOBE: PLEASE CREATE A PROPER FORUM FOR SUBSCRIPTION AND BILLING ISSUES
I think and many will agree, that it is about time that Adobe would create a forum just for subscription or billing issues. There are so many people looking for help that taking this issues to a specific forum, would help in reducing the signal to no
-
Difference between "Rebate Recipient" and "Customer" in Rebate Setting
While setting "Rebate Agreement" (TCode VBO1), for "Customer Rebate" (0003) Agreement Type, there is one "Rebate Recipient" and then when we go on to create the conditions, there is "Customer" for different rate etc. My question- What is difference b
-
Is it possible that using serial number find location of Ipod?
I lost my ipod touch in Korea last 2 weeks. How can I do for find out my Ipod? Is it possible that using serial number find location of Ipod?
-
What's so good about the Venture?
Can someone help me to understand this? Lately around here I've been hearing a lot of talk about people applying for or wanting the Venture. I'm just now starting to do my research and it's going to take me several days to get through all the recen