Updating .xml files through JAVA?
Hi all,
I am Krishna..
I need to basically parse the content of the XML form and do a text replace. The Promotions that are created by the users will also reference images. These references are stored in the XMLforms (which are basically XML files). When the Promotions are being 'submitted' the file path within the XMLForms should be updated with the target location.
<b>Example:</b>
Source Location where Promotion was created:
/myForms/filesystem/Partner Promotion/user1_folder/
Target Location where the Promotion is to be copied:
/myForms/filesystem/Submitted Promotions/user1_folder/
The Promotion XMLForm should be parsed for occurrences of /myForms/filesystem/Partner Promotion/user1_folder/ and replaced
with /myForms/filesystem/Submitted Promotions/user1_folder/
Problem is that, i am unable to build the XML file:
try {
String rpathString = "/documents/Test/promotions/Contacts.xml";
com.sapportals.portal.security.usermanagement.IUser user =
WPUMFactory.getUserFactory().getEP5User(request.getUser());
IResourceContext ctxt = new ResourceContext(user);
RID rid = RID.getRID(rpathString);
IResource resource =
ResourceFactory.getInstance().getResource(rid, ctxt);
//read the xml file
SAXBuilder builder = new SAXBuilder();
<b>Document doc = builder.build(new File(resource.getName()));</b> <i>//getting exception at this line</i>
Element root = doc.getRootElement();
List list = root.getChildren("contact");
Iterator iter = list.iterator();
while(iter.hasNext()) {
Element e = (Element)iter.next();
String name = e.getChild("name").getText();
response.write("<br>name:"+name);
String address = e.getChild("address").getText();
response.write(":::address:"+address);
} catch (Exception e) {
response.write(e.getLocalizedMessage());
e.printStackTrace();
I have also tried with
new File("http://<server>:50000/irj/go/km/docs/documents/Test/promotions/Contacts.xml");
and
new File(resource.getAccessURI());
.. but i don't get it.
<b>PS:</b> i have added <b>jdom.jar</b> file in the build path
Plz help . .. Thanking you in advance!
Regards,
Krish.
Hi Krish,
The <i>File</i> class doen't apply here.
xmlforms are resources, represented by the class <i>IResource</i>.
I am working with DOM, rather the SAX, but I guess same could work here.
The idea is to get the <i>InputStream</i> of the resource, and use it in the builder:
myResource.getUnfilteredContent().getInputStream().
The writing should then be done by IResource's updateContent.
Usefull javadoc:
http://www.ajvic.es/irj/portalapps/javadocs/km/com/sapportals/wcm/repository/iresource.html
Hope that helps,
Yoav.
EDIT:
Corrected 'setContent' to 'updateContent'
Similar Messages
-
Accessing XML files through java
Can any one explain me the easiest way of accessing XML files from Java.
Hi,
If you want to only access the XML file, use the SAX parser It will be very easy to handle and identify the element and value.
else if u want to change the XML value also, then better go with DOM, Which has very good flexiblity.
use according to the need, let me know if any help is required......
With Cheers
PrasannA -
How to update XML file through UCCX script ?
Hi,
I have an UCCX script with MENU step. One of the step is for technical support team. When caller chose this step, information about date and time of the call and calling number should be recorded on a XML file located on the web server.
This XML is uploaded into the web server , but I don't know how to update it through UCCX script.
Here is how the XML file looks like:
<?xml version="1.0" ?>
<rss version="2.0">
<channel>
<title>CALL LOG</title>
<link></link>
<description>Support Call log</description>
<ttl>1</ttl>
<item>
<title>2011-08-24 14:56:39 - 00044 123 123 123</title>
<link></link>
<description></description>
</item
</channel>
</rss>
Any idea?
Thanks,
OHi
The 'keyword transform' step uses the template XML file to generate the actual XML file you want to post... the template would be a plain text file uploaded to the repository, and would look like so:
<?xml version="1.0" ?>
CALL LOG
Support Call log
1
%%calldatetime%% - %%clinumber%%
Now - if you had that bit of XML, with correct time/number in it - have you verified know that you can definately just post that XML to a certain URL to get it on the server? Check with whoever manages that server exactly what you need to do to get it to appear - then worry about how you do that from UCCX. It may not be a matter of posting up that XML, you may need it in a different format or something..
Aaron -
How to Update existing XML File Using Java Swing
Hi,
I am reading XML file and getting keywords into JList. When i add some keywords into JList through textfield and remove keywords JList, then after click on save button it should update xml file. How can i do it ?
Please provide me some code tips for updating xml file
This is the code that i am using for reading XML File:
import javax.swing.*;
import java.awt.event.*;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;
import java.io.IOException;
import java.util.*;
import java.text.Collator;
import java.util.regex.*;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import com.cloudgarden.layout.AnchorConstraint;
import com.cloudgarden.layout.AnchorLayout;
public class getKeywords extends JFrame implements ActionListener
static JPanel p;
static JLabel lbl;
static JButton btnSave,btnAdd,btnRemove;
static String path;
static Vector v;
static JList lstCur;
static JTextField txtKey;
Document dom;
static image imgval;
NodeList nodelstImage;
static AnchorLayout anchorLay;
private DefaultListModel lstCurModel;
public getKeywords()
super("Current Keywords");
v=new Vector();
p=new JPanel();
txtKey=new JTextField(10);
btnAdd=new JButton("Add");
btnRemove=new JButton("Remove");
btnSave=new JButton("Save");
lbl=new JLabel("Current Keywords");
lstCurModel=new DefaultListModel();
lstCur=new JList();
JScrollPane scr=new JScrollPane(lstCur);
runExample();
lstCur.setModel(lstCurModel);
p.add(lbl);
p.add(scr);
p.add(txtKey);
p.add(btnAdd);
p.add(btnRemove);
p.add(btnSave);
add(p);
btnAdd.addActionListener(this);
btnRemove.addActionListener(this);
btnSave.addActionListener(this);
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
public static void main(String arg[])
getKeywords g=new getKeywords();
g.resize(250,400);
g.setVisible(true);
public void actionPerformed(ActionEvent ae)
if(ae.getSource()==btnAdd)
lstCurModel.addElement(txtKey.getText());
if(ae.getSource()==btnRemove)
lstCurModel.remove(lstCur.getSelectedIndex());
if(ae.getSource()==btnSave)
//Code to Write
public void runExample()
//Parse the XML file and get the DOM object
ParseXMLFile();
//Get the Detail of the Image Document
parseImageDocument();
//Get the Detail of the LML Document
//parseLMLDocument();
//System.out.println(lmlval.Title);
public void ParseXMLFile()
//Get the Factory
DocumentBuilderFactory builderFac = DocumentBuilderFactory.newInstance();
try
//Using factory get an instance of the Document Builder
DocumentBuilder builder = builderFac.newDocumentBuilder();
//parse using builder to get DOM representation of the XML file
dom = builder.parse("LML.xml");
catch(ParserConfigurationException pce)
pce.printStackTrace();
catch(SAXException sax)
sax.printStackTrace();
catch(IOException ioex)
ioex.printStackTrace();
public void parseImageDocument()
//Get the root element
Element docImgEle = dom.getDocumentElement();
//Get a nodelist for <Image> Element
nodelstImage = docImgEle.getElementsByTagName("Image");
if(nodelstImage != null && nodelstImage.getLength() > 0)
for(int i = 0; i < nodelstImage.getLength(); i++)
//Get the LML elements
Element el = (Element)nodelstImage.item(i);
//Get the LML object
getImage myImgval = new getImage();
imgval = myImgval.getimage(el);
v.addElement(new String(imgval.Thumb));
String[] x = Pattern.compile(",").split(imgval.Keys);
for (int s=0; s<x.length; s++)
lstCurModel.addElement(x[s].trim());
//System.out.println(x[s].trim());
} Thanks
NitinYou should update your DOM document to represent the changes that you want made.
Then, using the Transformation API you simply transform your document onto a stream representing your file. Something like this:
Transformer transformer = TransformerFactory.newInstance().newTransformer();
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
// TODO - set indentation amount!
Source source = new DOMSource(dom);
Result result = new StreamResult(file);
transformer.transform(source, result);Hope this helps. -
How to store xml data into file in xml format through java program?
HI Friends,
Please let me know
How to store xml data into file in xml format through java program?
thanks......
can discuss further at messenger.....
Avanish Kumar Singh
Software Engineer,
Samsung India Development Center,
Bangalore--560001.
[email protected]Hi i need to write the data from an XML file to a Microsoft SQL SErver database!
i got a piece of code from the net which allows me to parse th file:
import java.io.IOException;
import org.xml.sax.*;
import org.xml.sax.helpers.*;
import org.apache.xerces.parsers.SAXParser;
import java.lang.*;
public class MySaxParser extends DefaultHandler
private static int INDENT = 4;
private static String attList = "";
public static void main(String[] argv)
if (argv.length != 1)
System.out.println("Usage: java MySaxParser [URI]");
System.exit(0);
String uri = argv[0];
try
XMLReader parser = XMLReaderFactory.createXMLReader("org.apache.xerces.parsers.SAXParser");
MySaxParser MySaxParserInstance = new MySaxParser();
parser.setContentHandler(MySaxParserInstance);
parser.parse(uri);
catch(IOException ioe)
ioe.printStackTrace();
catch(SAXException saxe)
saxe.printStackTrace();
private int idx = 0;
public void characters(char[] ch, int start, int length)
throws SAXException
String s = new String(ch, start, length);
if (ch[0] == '\n')
return;
System.out.println(getIndent() + " Value: " + s);
public void endDocument() throws SAXException
idx -= INDENT;
public void endElement(String uri, String localName, String qName) throws SAXException
if (!attList.equals(""))
System.out.println(getIndent() + " Attributes: " + attList);
attList = "";
System.out.println(getIndent() + "end document");
idx -= INDENT;
public void startDocument() throws SAXException
idx += INDENT;
public void startElement(String uri,
String localName,
String qName,
Attributes attributes) throws SAXException
idx += INDENT;
System.out.println('\n' + getIndent() + "start element: " + localName);
if (localName.compareTo("Machine") == 0)
System.out.println("YES");
if (attributes.getLength() > 0)
idx += INDENT;
for (int i = 0; i < attributes.getLength(); i++)
attList = attList + attributes.getLocalName(i) + " = " + attributes.getValue(i);
if (i < (attributes.getLength() - 1))
attList = attList + ", ";
idx-= INDENT;
private String getIndent()
StringBuffer sb = new StringBuffer();
for (int i = 0; i < idx; i++)
sb.append(" ");
return sb.toString();
}// END PRGM
Now , am not a very good Java DEv. and i need to find a soln. to this prob within 1 week.
The next step is to write the data to the DB.
Am sending an example of my file:
<Start>
<Machine>
<Hostname> IPCServer </Hostname>
<HostID> 80c04499 </HostID>
<MachineType> sun4u [ID 466748 kern.info] Sun Ultra 5/10 UPA/PCI (UltraSPARC-IIi 360MHz) </MachineType>
<CPU> UltraSPARC-IIi at 360 MHz </CPU>
<Memory> RAM : 512 MB </Memory>
<HostAdapter>
<HA> kern.info] </HA>
</HostAdapter>
<Harddisks>
<HD>
<HD1> c0t0d0 ctrl kern.info] target 0 lun 0 </HD1>
<HD2> ST38420A 8.2 GB </HD2>
</HD>
</Harddisks>
<GraphicCard> m64B : PCI PGX 8-bit +Accel. </GraphicCard>
<NetworkType> hme0 : Fast-Ethernet </NetworkType>
<EthernetAddress> 09:00:30:C1:34:90 </EthernetAddress>
<IPAddress> 149.51.23.140 </IPAddress>
</Machine>
</Start>
Note that i can have more than 1 machines (meaning that i have to loop thru the file to be able to write to the DB)
Cal u tellme what to do!
Even better- do u have a piece of code that will help me understand and implement the database writing portion?
I badly need help here.
THANX -
STORING DATA IN FILE IN XML FORMAT THROUGH JAVA ?
HOW TO STORE DATA IN FILE IN XML FORMAT THROUGH JAVA PROGRAM?
Have you looked into JAXB?
That is a new way of processing XML into Java classes or visa versa.
Otherwise, there are a lot of other XML related tools for Java in the -XML link on the left side of the page. -
Updation in zip file through java program
Hi,
Can any buddy help me updating zip file using java programs. I dont want to delete the zip file but I want to update single file in the zip.
Any clue ?
Regards,
AshishI mean I want to update a zip file using java program.
Suppose there are 4 files zipped into single zip file.
zipped.zip contains a.txt, b.txt. c.txt. d.txt
Now the contect of a.txt got changed and I want to update zipped.zip to with the changed a.txt.
I have one way of creating a new file with new set of a.txt, b.txt, c.txt and then delete the earliar zipped.zip and rename the newly created zipped to zipped.zip.
I dont want to do the same as above mentioned way. Is there any way provided in java API to remove any entry or update any entry?
I feel now the problem has got explained in details.
Any help ? -
Split XML in Multiple XML files with Java Code
Hi guys , i have following xml file as input ....
<?xml version="1.0" encoding="ISO-8859-1"?>
<T0020
xsi:schemaLocation="http://www.safersys.org/namespaces/T0020V1 T0020V1.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.safersys.org/namespaces/T0020V1">
<INTERFACE>
<NAME>SAFER</NAME>
<VERSION>04.02</VERSION>
</INTERFACE>
<TRANSACTION>
<VERSION>01.00</VERSION>
<OPERATION>REPLACE</OPERATION>
<DATE_TIME>2009-09-01T00:00:00</DATE_TIME>
<TZ>CT</TZ>
</TRANSACTION>
<IRP_ACCOUNT>
<IRP_CARRIER_ID_NUMBER>274845</IRP_CARRIER_ID_NUMBER>
<IRP_BASE_COUNTRY>US</IRP_BASE_COUNTRY>
<IRP_BASE_STATE>AR</IRP_BASE_STATE>
<IRP_ACCOUNT_NUMBER>55002</IRP_ACCOUNT_NUMBER>
<IRP_ACCOUNT_TYPE>I</IRP_ACCOUNT_TYPE>
<IRP_STATUS_CODE>100</IRP_STATUS_CODE>
<IRP_STATUS_DATE>2007-11-06</IRP_STATUS_DATE>
<IRP_UPDATE_DATE>2009-08-03</IRP_UPDATE_DATE>
<IRP_NAME>
<NAME_TYPE>LG</NAME_TYPE>
<NAME>A P SUPPLY CO</NAME>
<IRP_ADDRESS>
<ADDRESS_TYPE>PH</ADDRESS_TYPE>
<STREET_LINE_1>1400 N OATS</STREET_LINE_1>
<STREET_LINE_2/>
<CITY>TEXARKANA</CITY>
<STATE>AR</STATE>
<ZIP_CODE>71854</ZIP_CODE>
<COUNTY>MILLER</COUNTY>
<COLONIA/>
<COUNTRY>US</COUNTRY>
</IRP_ADDRESS>
<IRP_ADDRESS>
<ADDRESS_TYPE>MA</ADDRESS_TYPE>
<STREET_LINE_1>P O BOX 1927</STREET_LINE_1>
<STREET_LINE_2/>
<CITY>TEXARKANA</CITY>
<STATE>AR</STATE>
<ZIP_CODE>75504</ZIP_CODE>
<COUNTY/>
<COLONIA/>
<COUNTRY>US</COUNTRY>
</IRP_ADDRESS>
</IRP_NAME>
</IRP_ACCOUNT>
<IRP_ACCOUNT> ..... </IRP_ACCOUNT>
<IRP_ACCOUNT> ..... </IRP_ACCOUNT>
<IRP_ACCOUNT> ..... </IRP_ACCOUNT>
</T0020>
and i want to take this xml file and split it into multiple files through java code like this ...
File1.xml
<T0020>
<IRP_ACCOUNT> ..... </IRP_ACCOUNT>
<IRP_ACCOUNT> ..... </IRP_ACCOUNT>
</T0020>
File2.xml
<T0020>
<IRP_ACCOUNT> ..... </IRP_ACCOUNT>
<IRP_ACCOUNT> ..... </IRP_ACCOUNT>
</T0020>
like wise...
Each xml file contain maximum 10 or 15 IRP_ACCOUNT.
Can somebody please help me ? How can i do it with stax like start element and all ?
thanks in advance.Ah, sorry, strike that. You want multiple files. I think the easiest way is to simply parse with DOM. [http://www.w3schools.com/xpath/default.asp] . And here [http://www.w3schools.com/xpath/default.asp].
You can output the various XML elements using a PrintWriter or creating a separate DOM document for each file you want to create and serializing that.
- Saish -
Generation of xml file from java code
hi,
I want to manipulate data in a xml file with java code.I have read data from xml file and also changed it. But i am unable to covert it again in xml file from java code. Can you please tell me how i can do this?Let me know which parser are you using currently for reading xml files so that i assist you. For now, you can refer to STAX Parser API under this link
http://java.sun.com/webservices/docs/1.6/tutorial/doc/SJSXP3.html -
How to read the data from Excel file and Store in XML file using java
Hi All,
I got a problem with Excel file.
My problem is how to read the data from Excel file and Store in XML file using java excel api.
For getting the data from Excel file what are all the steps i need to follow to get the correct result.
Any body can send me the code (with java code ,Excel sheet) to this mail id : [email protected]
Thanks & Regards,
Sreenu,
[email protected],
india,If you want someone to do your work, please have the courtesy to provide payment.
http://www.rentacoder.com -
Error while running executable file through java in WinNT
I would like to run an executable file with Java.
- If I try with notepad or paint, i.e. Windows Applications,
I have no problem.
- I also can run Non-Windows-Own Applications, except one.
I get an error message, if I want to run this program through Java.
I have tried following commands to run an executable file.
Runtime.getRuntime().exec("cmd.exe /c "+command);
Runtime.getRuntime().exec("cmd.exe /c start "+command);
Runtime.getRuntime().exec("cmd.exe /c start /wait "+command);
Runtime.getRuntime().exec("cmd.exe /k start "+command);
command : the path to the executable file
I can run the application directly, if I click the icon on desktop,
but not through Java.
here is the error message I get
screenshot : http://www.aykut.de/error_message.jpg
Text : "Security Check failure"
The Logon System has been tampered with.
The Administrator will need to re-install.
my Idea :
The application is "old".
I think it was written for Win 3.1.
Therefore I don't know if there is any other
possibilty to run a "DOS Exe File" through Java.I have just figured out how it works,
if somebody else here in forum have this problem,
here is the solution :
String path = "F:\...\...\Application.exe";
String envDir = path.substring(0, path.lastIndexOf("\\"));
String[] command = {"cmd.exe", "/c", "start", "/wait", "/D"+envDir, path};
Process process = Runtime.getRuntime().exec(command);
"start /Dpath" => path: environment directory F:\...\...\
"start /wait" => wait until Application.exe terminates
if you use Win95 or Win98 use command.com instead of cmd.exe
Aykut -
How to edit the existing data in the XML file from java programming.
Hi all
i am able to create XML file with the sample data as below from java programming.
i need sample code on how to edit the existing data in the XML file?
for example
<?xml version="1.0"?>
<mydata>
<data1>
<key1>467</key1>
<name1>Paul</name1>
<id1>123</id1>
</data1>
<data2>
<key2>467</key2>
<name2>Paul</name2>
<id2>123</id2>
</data2>
</mydata>
i am able to insert the data in the XML.
now i need sample code on how to modify the data in the above XML file from the java programming for only key2,name2,id2 tags only. the remaining tags data in the XML file i want to keep same data except for key2,name2,id2 which are i want to modify from java code
Regards
Sunil
[points will be always rewardable]hi
u need a parser or validate the xml file for to read the xml file from java coding u need for this
xml4j.jar u can download this file from here
http://www.alphaworks.ibm.com/tech/xml4j
or we can use the SAX(simple API for XML)
some sample applications for this
http://www.java-tips.org/java-se-tips/javax.xml.parsers/how-to-read-xml-file-in-java.html
http://www.developertutorials.com/tutorials/java/read-xml-file-in-java-050611/page1.html
http://www.xml-training-guide.com/e-xml44.html
let me know u need any other info
bvr -
How I can create a XML file from java Aplication
How I can create a XML file from java Aplication
whith have a the following structure
<users>
<user>
<login>anyName</login>
<password>xxxx</password>
</user>
</users>
the password label must be encripted
accept any suggestionLet us assume you have all the data from the jsp form in an java bean object..
Now you want a xml file. This can be acheived in 2 ways
1. Write it into a file using java.io classes. Say you have a class with name
write("<name>"+obj.getName+</name>);
bingo you have a flat file with the xml
2. Use data binding to do the trick
will recommend JiBx and Castor for the 2nd option
Regards,
Rajagopal -
Hi all i am working to create a XML file using java can any one show me some sample code how to do so
All I suggested was to insert a single line ("X.serialize(root);") into your code. Anyway, here's a ready-to-compile source code based on yours. This code utilizes the Xerces-J class library.import java.io.File;
import java.io.FileWriter;
import org.apache.xerces.dom.DocumentImpl;
import org.apache.xml.serialize.OutputFormat;
import org.apache.xml.serialize.XMLSerializer;
import org.w3c.dom.Element;
public class Test {
public static void main(String[] arguments) {
FileWriter out;
DocumentImpl d;
Element root;
XMLSerializer X;
try {
System.out.println(" creatin ");
File fos = new File("xsr.xml");
out = new FileWriter("xsr.xml");
System.out.println("created File .." + fos.getName());
out.flush();
d = new DocumentImpl();
System.out.println("create root");
root = d.createElement("abc");
System.out.println("creating element");
d.insertBefore(root, null);
//out.write(d.createAttribute(""));
OutputFormat o = new OutputFormat(d);
System.out.println("Output format...");
o.setIndent(5);
o.setIndenting(true);
o.setDoctype("lab1.dtd", "lab1.dtd");
o.setDoctype("name of dtd file", "name of dtd file");
X = new XMLSerializer(o);
X.setOutputCharStream(out);
X.serialize(root);
out.flush();
out.close();
catch (Exception e1){
e1.printStackTrace();
} -
Creating XML file from Java Bean
Hi
Are there any standard methods in Java 1.5 to create XML file from java bean,
i can use JAXB or castor to do so,
But i would like to know if there is any thing in java core classes,
I have seen XMLEncoder, but this is not what i want.
Any ideas
AshishMarshall JavaBean to an XML document with JAXB or XMLBeans.
Maybe you are looking for
-
Hi I had this problem before and you helped fix it. I just bought an updated Iphone and now it says my itunes purchases are disabled. They also put spelled my name wrong and I do not have any mail coming thru. Please help me!!!!
-
How to set tabbing order in Acrobat X Pro
I cannot find any instructions for manually setting tabbing order in Acrobat X Pro. It does not work the same as earlier versions of Acrobat Pro. Any idea as to where I can go for instructions for X Pro?
-
I have my songs on a music website that allows what they refer to as "Super Hi Fi" mp3's, I've always used 256 kbps because I heard it will play on more players, but now I'm questioning if that is true. I would like to change my settings to Super Hi
-
Hi all, when i execute the below query i am getting error as SQL> select a.(to_char(max(end_time),'DD-mon-YYYY HH24:MI:SS')),b.SEQUENCE# from v$rman_status a,V$ARCHIVED_LOG b where a.operation='BACKUP' 2 and a.stamp=b.stamp; select a.(to_char(max(
-
Documentation on Message Agent
Is the use of methods defined in pssmsgapi.h and technologies earlier to Component Interfaces obsolete ? where can I find documentation on those in the People Tools 8.94 ? Thanks and Regards