Include Schema Name When Creating XML



I have a Java program that creates an XML string and I wanted to pass
in a schema name to include when the DOM object is created. Here is my
Java code. The startDocument method automatically adds "<?xml
version="1.0" encoding="UTF-8"?>". Is there something I can add to
this method to write out the schema location?

package igxml;

import java.io.*;
import java.util.Vector;

import org.w3c.dom.*;
import org.xml.sax.helpers.DefaultHandler;
import javax.xml.parsers.*;
import org.apache.xml.serialize.*;

public class IgXMLBuild extends DefaultHandler {

Document doc;
Element root;
Element currentElement;
Element previousElement;
Element childElement;
int elementIndex;
Text textData;
private Vector elementList = new Vector();

/**
* This method is used to create a new XML document (DOM object)
* @param rootName This is the name of the Root element.
*/
public void startDocument(String rootName)
{

// Create the DOM object
DocumentBuilderFactory factory =
DocumentBuilderFactory.newInstance();
factory.setNamespaceAware(true);
DocumentBuilder builder = null;
try {
builder = factory.newDocumentBuilder();
} catch (ParserConfigurationException e) {
System.out.println("Could not locate a JAXP DocumentBuilder
class");
}
doc = builder.newDocument();

/* create the root node */
root = doc.createElement(rootName);

/* Initialiaze the vector that will hold the element pointers. */
elementList.clear();
elementList.addElement(root);
currentElement = root;
return;
}

/**
* This method will create the open tag for a new element.
* @param elementName The name of the new element.
*/
public void startTag (String elementName)
{
/* create a row node */
currentElement = doc.createElement(elementName);

/* add Element ID to Vector */
elementList.addElement(currentElement);
return;
}

/**
* This method will create the end tag for the last open tag
(startTag) that was created.
* @param elementName This parameter is not used in the function. It
is for documentation purposes only.
*/
public void endTag(String elementName)
{
/* append the row node to the parent node */
elementIndex = elementList.indexOf(currentElement);
elementIndex += -1;
previousElement = (Element)elementList.get(elementIndex);
previousElement.appendChild(currentElement);
elementIndex += 1;
elementList.remove(elementIndex);
currentElement = previousElement;
}

/**
* This method is used to create an XML Open/Close tag with data
* @param elementName XML Tag Name for open/close tag
* @param elementValue Data between open/close tag
*/
public void addTag(String elementName, String elementValue)
{
childElement = doc.createElement(elementName);
textData = doc.createTextNode(elementValue);
childElement.appendChild(textData);
currentElement.appendChild(childElement);
}

/**
* This method is used to create all of the close tags for
* any tags that were opened (startTag) and not yet closed.
*/
public void closeTags(){
while (root != currentElement) {
endTag("");
currentElement = (Element)elementList.lastElement();
}
}

/**
* This method is called when you are done building the XML document.
* It will close any tags that were not yet closed.
* @return The XML document will be returned as a String.
*/
public String finishDocument()
{
closeTags();

/* append the root node to the document */
doc.appendChild(root);

try {
// Serialize the document
StringWriter out;
out = new StringWriter();
XMLSerializer serializer = new XMLSerializer(out, new
OutputFormat(doc));
serializer.serialize(doc);
String xmlString = out.toString();
return xmlString;
} catch (IOException e) {
System.err.println(e);
return e.toString();
}
}
}

.



Relevant Pages

  • Nesting XML Elements in Java
    ... I am new to Java and XML, ... Element parentElement; ... public void endParent ... public void addParent(String passParentName, String ...
    (comp.lang.java.programmer)
  • Re: XML and Java from Beginner
    ... If it is then you should not be parsing the XML manual. ... public void charactersthrows SAXException { ... public void startElement(String namespaceURI, String localName, String rawName, Attributes atts) throws SAXException { ...
    (comp.lang.java.programmer)
  • Re: Encryption
    ... void Append(String Tag, String Value); ... String Item(String Tag); ... QueryString throws Exception{ ... public void Append{ ...
    (comp.lang.java.programmer)
  • Re: SAX Parser problem
    ... I want to get the "characters" of a specific tag (element) ... Right now I extend the DefaultHandler and override public void ... characters(charch, int start, int length) method. ... String namespaceURI, ...
    (comp.lang.java.programmer)
  • Re: XML
    ... tag happens to be the same as the name of the tag. ... Any XML parser/generator ... >>>I want to store some data in a field in a database as XML - is there any ... >>> string ...
    (microsoft.public.dotnet.languages.csharp)