Hi Paul,
Through google I have found some code for replacement and I have modified it for my code. But the google code was giving error so I am stuck at it.
Following is the code I have written so far.
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.input.DOMBuilder;
import org.jdom.output.XMLOutputter;
// used for printing
import org.apache.xml.serialize.XMLSerializer;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.Iterator;
import java.util.List;
class XMLWriter
{
public void update(File fileName)
{
try
{
DOMBuilder domBuilder = new DOMBuilder();
Document
doc = domBuilder.build(fileName);//gives error here as build method is for Document type.
Element element = doc.getRootElement();
getChildren(element);
writeToXML(doc, fileName);
getChildren(element);
}
catch (Exception e)
{
e.printStackTrace();
}
}
/**
* @param doc
*/
private void writeToXML(Document document, File filePath)
{
XMLOutputter xmloutputter = new XMLOutputter();
try
{
FileOutputStream fileOutputStream = new FileOutputStream(filePath);
xmloutputter.output(document, fileOutputStream);
fileOutputStream.close();
}
catch (FileNotFoundException e)
{
e.printStackTrace();
}
catch (IOException e)
{
e.printStackTrace();
}
}
public void getChildren(Element element)
{
List childrenList = element.getChildren();
Iterator itr = childrenList.iterator();
while (itr.hasNext())
{
Element childElement = (Element) itr.next();
String fieldElement = (String) itr.next();
if (childElement.getChildren() != null)
{
getChildren(childElement);
}
//replace _FIELD
if (childElement.getName().contains("_FIELD"))
{
int occurance = fieldElement.indexOf("_");
fieldElement = fieldElement.substring(0, occurance);
updateInfo(childElement, "fieldElement");
}
//replace _POPUP
if (childElement.getName().contains("_POPUP"))
{
int occurance = fieldElement.indexOf("_");
fieldElement = fieldElement.substring(0, occurance);
updateInfo(childElement, "fieldElement");
}
//replace _CHECK
if (childElement.getName().contains("_CHECK"))
{
int occurance = fieldElement.indexOf("_");
fieldElement = fieldElement.substring(0, occurance);
updateInfo(childElement, "fieldElement");
}
}
}
/**
* @param childElement
* @param string
* @param string2
*/
private void updateInfo(Element element, String elementName)
{
element.setName(elementName);
}
static public void main(String[] args)
{
XMLWriter xmlWriter = new XMLWriter();
xmlWriter.update(new File("c:\\formData.xml"));
}
}
I am getting error in the build method of the domBuilder. Please help me in the above code or suggest some other way.
Thanks in advance,
Megha