Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
HomeAnnouncementsWhite Papers
Discussion GroupsFirst AidDatabasesJavaBeansGUIJava 3DVirtual MachineCORBASecurityToolsGeneral
Java DirectoryOpen Source ProjectsSample Book ChaptersUser GroupsWeb Resources
Related Topics
Databases.NETMore Topics ...

Java Forum / General / December 2007

Tip: Looking for answers? Try searching our database.

Help with Creating a Looping Procedure

Thread view: 
thelane - 10 Dec 2007 16:41 GMT
Hi Below is the code I am using to parse an xml document.

I need help with creating a loop to read all the child nodes and then
all the values of those nodes. What I have at the monent works fine,
but I would like to cut the code way down by using a procedure.

THanks,
===========================

import oracle.xml.jaxp.*;
import oracle.xml.parser.v2.*;
import java.io.*;
import org.w3c.dom.*;

public class DOMParserApp{

public void parseXML(){

try{
BufferedWriter out = new BufferedWriter(new FileWriter("c:/output/
outfilename.csv"));
String line1 = new String();
String memoryVar1 = new String();
String memoryVar2 = new String();
String memoryVar3 = new String();
String memoryVar4 = new String();
memoryVar1 = "0";
memoryVar2 = "0";
line1 = ",PLEASE PLACE TARIFF INFO HERE";
line1 = line1+"\n";
out.write(line1);
String line2 = new String();
line2 = "Marketing Description,Rate Information,Setup,1st
Minute,Rest";
line2 = line2+"\n";
out.write(line2);
JXDocumentBuilderFactory factory = (JXDocumentBuilderFactory)
JXDocumentBuilderFactory.newInstance();
factory.setAttribute(JXDocumentBuilderFactory.ERROR_STREAM, new
FileOutputStream(new
File("c:/output/errorStream.txt")));
factory.setAttribute(JXDocumentBuilderFactory.SHOW_WARNINGS,
Boolean.TRUE);
JXDocumentBuilder documentBuilder = (JXDocumentBuilder)
factory.newDocumentBuilder();
InputStream input = new FileInputStream(new File("c:/output/
catalog1.xml"));
XMLDocument xmlDocument = (XMLDocument)
(documentBuilder.parse(input));
System.out.println("Encoding: " + xmlDocument.getEncoding());
System.out.println("Version: " + xmlDocument.getVersion());
NodeList namespaceNodeList =
xmlDocument.getElementsByTagNameNS("http://xdk.com/catalog/
journal","title");

for (int i = 0; i < namespaceNodeList.getLength(); i++) {
XMLElement namespaceElement = (XMLElement) namespaceNodeList.item(i);
System.out.println("Namespace Prefix: " +
namespaceElement.getNamespaceURI());
System.out.println("Namespace URI: " +
namespaceElement.getPrefix());
System.out.println("Element Name: " +
namespaceElement.getTagName());
System.out.println("Element text: " +
namespaceElement.getFirstChild().getNodeValue().replaceAll(",",""));
}
XMLElement rootElement = (XMLElement)
(xmlDocument.getDocumentElement());
System.out.println("Root Element is: " + rootElement.getTagName());

if (rootElement.hasChildNodes()) {
NodeList nodeList = rootElement.getChildNodes();
if (rootElement.hasChildNodes()) {
NodeList nodeListSub = rootElement.getChildNodes();
System.out.print("There are "+nodeListSub.getLength()+" child elements.
\n");
System.out.print("They are: \n");

for (Node nodeListSub1 = rootElement.getFirstChild();
nodeListSub1 != null;
nodeListSub1 = nodeListSub1.getNextSibling())
{
if (nodeListSub1.getNodeType() == nodeListSub1.TEXT_NODE){
System.out.println("Text:
"+nodeListSub1.getNodeValue().replaceAll(",",""));
} else if (nodeListSub1.getNodeType() == nodeListSub1.ELEMENT_NODE) {
System.out.println("DEC:"+nodeListSub1.getNodeName()+" = "+
nodeListSub1.getFirstChild().getNodeValue().replaceAll(",",""));
}
}
}

for (int i = 0; i < nodeList.getLength(); i++) {
XMLNode node = (XMLNode) nodeList.item(i);

if (node.getNodeType() == XMLNode.ELEMENT_NODE) {
XMLElement element = (XMLElement) node;
System.out.println("Element Tag Name: "+element.getTagName());

if (element.hasChildNodes()) {
NodeList nodeListSub = element.getChildNodes();

for (int j = 0; j < nodeListSub.getLength();j++) {
XMLNode nodeSub = (XMLNode) nodeListSub.item(j);

if (nodeSub.getNodeType() == XMLNode.ELEMENT_NODE) {
XMLElement elementSub = (XMLElement) nodeSub;

if (elementSub.hasChildNodes()) {
NodeList nodeListSub1 = elementSub.getChildNodes();

for (int k = 0; k < nodeListSub1.getLength();k++) {
XMLNode nodeSub1 = (XMLNode) nodeListSub1.item(k);

if (nodeSub1.getNodeType() == XMLNode.ELEMENT_NODE) {
XMLElement elementSub1 = (XMLElement) nodeSub1;

if (elementSub1.hasChildNodes()) {
NodeList nodeListSub2 = elementSub1.getChildNodes();

for (int l = 0; l < nodeListSub2.getLength();l++) {
XMLNode nodeSub2 = (XMLNode) nodeListSub2.item(l);

if (nodeSub2.getNodeType() == XMLNode.ELEMENT_NODE) {
XMLElement elementSub2 = (XMLElement) nodeSub2;

if (elementSub2.hasChildNodes()) {
NodeList nodeListSub3 = elementSub2.getChildNodes();

for (int m = 0; m < nodeListSub3.getLength();m++) {
XMLNode nodeSub3 = (XMLNode) nodeListSub3.item(m);

if (nodeSub3.getNodeType() == XMLNode.ELEMENT_NODE) {
XMLElement elementSub3 = (XMLElement) nodeSub3;

if (elementSub3.hasChildNodes()) {
NodeList nodeListSub4 = elementSub3.getChildNodes();

for (int n = 0; n < nodeListSub4.getLength();n++) {
XMLNode nodeSub4 = (XMLNode) nodeListSub4.item(n);

if (nodeSub4.getNodeType() == XMLNode.ELEMENT_NODE) {
XMLElement elementSub4 = (XMLElement) nodeSub4;

if (elementSub4.hasChildNodes()) {
NodeList nodeListSub5 = elementSub4.getChildNodes();

for (int p = 0; p < nodeListSub5.getLength();p++) {
XMLNode nodeSub5 = (XMLNode) nodeListSub5.item(p);

if (nodeSub5.getNodeType() == XMLNode.ELEMENT_NODE) {
XMLElement elementSub5 = (XMLElement) nodeSub5;
//System.out.println("Sub5 Element Tag Name:
"+elementSub4.getTagName());
if (elementSub5.hasChildNodes()) {
NodeList nodeListSub6 = elementSub5.getChildNodes();

for (int q = 0; q < nodeListSub6.getLength();q++) {
XMLNode nodeSub6 = (XMLNode) nodeListSub6.item(q);

if (nodeSub6.getNodeType() == XMLNode.ELEMENT_NODE) {
XMLElement elementSub6 = (XMLElement) nodeSub6;
//System.out.println("Sub5 Element Tag Name:
"+elementSub4.getTagName());
if (elementSub6.hasChildNodes()) {
NodeList nodeListSub7 = elementSub6.getChildNodes();

for (int r = 0; r < nodeListSub7.getLength();r++) {
XMLNode nodeSub7 = (XMLNode) nodeListSub7.item(r);

if (nodeSub7.getNodeType() == XMLNode.ELEMENT_NODE) {
XMLElement elementSub7 = (XMLElement) nodeSub7;
//System.out.println("Sub5 Element Tag Name:
"+elementSub4.getTagName());
if (elementSub7.hasChildNodes()) {
NodeList nodeListSub8 = elementSub7.getChildNodes();

for (int s = 0; s < nodeListSub8.getLength();s++) {
XMLNode nodeSub8 = (XMLNode) nodeListSub8.item(s);

if (nodeSub8.getNodeType() == XMLNode.ELEMENT_NODE) {
XMLElement elementSub8 = (XMLElement) nodeSub8;
//System.out.println("Sub5 Element Tag Name:
"+elementSub4.getTagName());

if (elementSub8.getTagName() == "Price"){
String line = new String();
line = element.getFirstChild().getNodeValue().replaceAll(",","")
+","+elementSub.getFirstChild().getNodeValue().replaceAll(",","")
+","+elementSub1.getFirstChild().getNodeValue().replaceAll(",","")
+","+elementSub2.getFirstChild().getNodeValue().replaceAll(",","")
+","+elementSub3.getFirstChild().getNodeValue().replaceAll(",","")
+","+elementSub4.getFirstChild().getNodeValue().replaceAll(",","")
+","+elementSub5.getFirstChild().getNodeValue().replaceAll(",","")
+","+elementSub6.getFirstChild().getNodeValue().replaceAll(",","")
+","+elementSub7.getFirstChild().getNodeValue().replaceAll(",","")
+","+elementSub8.getFirstChild().getNodeValue().replaceAll(",","");
line = line.replaceAll("\n","");
line = line+"\n";
out.write(line);
//System.out.println("rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr:
" );
}

}
}
}

if (elementSub7.getTagName() == "Price"){
String line = new String();
line = element.getFirstChild().getNodeValue().replaceAll(",","")
+","+elementSub.getFirstChild().getNodeValue().replaceAll(",","")
+","+elementSub1.getFirstChild().getNodeValue().replaceAll(",","")
+","+elementSub2.getFirstChild().getNodeValue().replaceAll(",","")
+","+elementSub3.getFirstChild().getNodeValue().replaceAll(",","")
+","+elementSub4.getFirstChild().getNodeValue().replaceAll(",","")
+","+elementSub5.getFirstChild().getNodeValue().replaceAll(",","")
+","+elementSub6.getFirstChild().getNodeValue().replaceAll(",","")
+","+elementSub7.getFirstChild().getNodeValue().replaceAll(",","");
line = line.replaceAll("\n","");
line = line+"\n";
out.write(line);

// Dediacted Accounts

}

}
}
}
if (elementSub6.getTagName() == "Price"){
String line = new String();
line = element.getFirstChild().getNodeValue().replaceAll(",","")
+","+elementSub.getFirstChild().getNodeValue().replaceAll(",","")
+","+elementSub1.getFirstChild().getNodeValue().replaceAll(",","")
+","+elementSub2.getFirstChild().getNodeValue().replaceAll(",","")
+","+elementSub3.getFirstChild().getNodeValue().replaceAll(",","")
+","+elementSub4.getFirstChild().getNodeValue().replaceAll(",","")
+",,"+elementSub5.getFirstChild().getNodeValue().replaceAll(",","")
+","+elementSub6.getFirstChild().getNodeValue().replaceAll(",","");
line = line.replaceAll("\n","");
line = line+"\n";
out.write(line);
// Directory Assistance,
// Premium Rate
// Roaming on ROxxx
// Roaming on NANP2

}

}
}
}
if (elementSub5.getTagName() == "Price"){
String line = new String();
//Voice,HPLMN Originating/Forwarded Calls,International
Destinations,Germany Fixed,Rate,,,Rate,0.5
line = element.getFirstChild().getNodeValue().replaceAll(",","")
+","+elementSub.getFirstChild().getNodeValue().replaceAll(",","")
+","+elementSub1.getFirstChild().getNodeValue().replaceAll(",","")
+","+elementSub2.getFirstChild().getNodeValue().replaceAll(",","")
+","+elementSub3.getFirstChild().getNodeValue().replaceAll(",","")
+",,,"+elementSub4.getFirstChild().getNodeValue().replaceAll(",","")
+","+elementSub5.getFirstChild().getNodeValue().replaceAll(",","");
line = line.replaceAll("\n","");
line = line+"\n";
System.out.print("BEFORE::"+line);

if
(elementSub3.getFirstChild().getNodeValue().replaceAll(",","").replaceAll("\n","").compareTo("1st
minute") == 0 ||
elementSub3.getFirstChild().getNodeValue().replaceAll(",","").replaceAll("\n","").compareTo("1st
Minute") == 0){
//System.out.println("xoxoxoxoxoxxoxoxoxoxoxox");
// Flag

memoryVar1 = "1";

// Rate Value for First Minute
memoryVar2 =
elementSub5.getFirstChild().getNodeValue().replaceAll(",","").replaceAll("\n","");

} else
if(elementSub3.getFirstChild().getNodeValue().replaceAll(",","").replaceAll("\n","").compareTo("setup")
== 0) {
if (memoryVar1 == "1" ){
line = line.replaceAll("\n","")+","+memoryVar2;
line = line+"\n";
memoryVar1 = "0";
System.out.print("AFTER::"+line);
}
//
System.out.println("::"+elementSub3.getFirstChild().getNodeValue().replaceAll(",","").replaceAll("\n","")
+"::");

}
//
if (memoryVar1 == "0"){
out.write(line);
}

// International Destinations
// Premium Rate
// ROW2 Terminating
//System.out.print(memoryVar1+line);
}

}
}
}
if (elementSub4.getTagName() == "Price"){
String line = new String();
line = element.getFirstChild().getNodeValue().replaceAll(",","")
+","+elementSub.getFirstChild().getNodeValue().replaceAll(",","")
+","+elementSub1.getFirstChild().getNodeValue().replaceAll(",","")
+","+elementSub2.getFirstChild().getNodeValue().replaceAll(",","")
+",,,,"+elementSub3.getFirstChild().getNodeValue().replaceAll(",","")
+","+elementSub4.getFirstChild().getNodeValue().replaceAll(",","");
line = line.replaceAll("\n","");

line = line+"\n";
out.write(line);

//SMS
}

}
}
}
if (elementSub3.getTagName() == "Price"){
String line = new String();
line = element.getFirstChild().getNodeValue().replaceAll(",","")
+","+elementSub.getFirstChild().getNodeValue().replaceAll(",","")
+","+elementSub1.getFirstChild().getNodeValue().replaceAll(",","")
+",,,,,"+elementSub2.getFirstChild().getNodeValue().replaceAll(",","")
+","+elementSub3.getFirstChild().getNodeValue().replaceAll(",","");
line = line.replaceAll("\n","");
line = line+"\n";
out.write(line);
//System.out.print(line);
}

}
}
}
if (elementSub2.getTagName() == "Price"){
String line = new String();
line = element.getFirstChild().getNodeValue().replaceAll(",","")
+","+elementSub.getFirstChild().getNodeValue().replaceAll(",","")
+",,,,,,"+elementSub1.getFirstChild().getNodeValue().replaceAll(",","")
+","+elementSub2.getFirstChild().getNodeValue().replaceAll(",","");
line = line.replaceAll("\n","");
line = line+"\n";
out.write(line);
}

}
}
}
if (elementSub1.getTagName() == "Price"){
String line = new String();
line = element.getFirstChild().getNodeValue().replaceAll(",","")
+",,,,,,,"+elementSub.getFirstChild().getNodeValue().replaceAll(",","")
+","+elementSub1.getFirstChild().getNodeValue().replaceAll(",","");
line = line.replaceAll("\n","");
line = line+"\n";
out.write(line);
}

}
}
}
if (elementSub.getTagName() == "Price"){
String line = new String();
line = element.getFirstChild().getNodeValue().replaceAll(",","")
+","+elementSub.getFirstChild().getNodeValue().replaceAll(",","");
line = line.replaceAll("\n","");
line = line+"\n";
out.write(line);
}

}
}
}
if (element.getTagName() == "Price"){
String line = new String();
line = element.getFirstChild().getNodeValue().replaceAll(",","");
line = line.replaceAll("\n","");
line = line+"\n";
out.write(line);
}

if (element.hasAttributes()) {
NamedNodeMap attributes = (NamedNodeMap) element.getAttributes();
for (int j = 0; j < attributes.getLength(); j++) {
XMLAttr attribute = (XMLAttr)attributes.item(j);
//System.out.println(" Attribute: " + attribute.getName() +" with
value " +attribute.getValue());
}}

}
}
}
out.flush();
}catch(javax.xml.parsers.ParserConfigurationException e){}
catch(java.io.FileNotFoundException e){}
catch(java.io.IOException e){}
catch(org.xml.sax.SAXException e){}

}

public static void main(String[] argv){

DOMParserApp parser=new DOMParserApp();

parser.parseXML();

}

}
Owen Jacobson - 10 Dec 2007 21:46 GMT
> Hi Below is the code I am using to parse an xml document.
>
[quoted text clipped - 4 lines]
> THanks,
> ===========================
*snip*

Have you considered not writing this in Java?  If all you're doing is
whacking a known input structure into CSV, you might try doing it in
XSLT, which is at least designed for the task.

Also, MJD has *three* suggestions for you.  In no particular order,

#11927
 A good approach to that problem would be to hire a computer
programmer.

#11928
 First get a book on programming.  Then read it.  Then write the
program.

#11929
 First ask yourself `How would I do this without a computer?'  Then
have the computer do it the same way.


Free Magazines

Get these publications absolutely FREE for up to 12 months. There are no hidden fees and no obligation. Simply choose a title, complete the application form and submit it. Read more ...

Oracle MagazineNetwork ComputingComputer WorldBio-IT WorldeWeekInformation WeekInfosecurity
 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2008 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.