Converting Dom Document object into XML file removes the DTD
Hi All
My xml is dtd. I have one xml file. i changed the node value after that i want to create a xml file with the same name. I created new xml file but i am not seeing the old dtd in the new file. This process is done with the help of jaxp.
My code is given below
File fileInput = new File("input.xml");
File fileOutput = new File("output.xml");
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
factory.setExpandEntityReferences(false);
DocumentBuilder builder = factory.newDocumentBuilder();
Document document = builder.parse(fileInput);
TransformerFactory tFactory = TransformerFactory.newInstance();
Transformer transformer = tFactory.newTransformer();
transformer.setOutputProperty(javax.xml.transform.OutputKeys.INDENT, "true");
transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2");
DOMSource source = new DOMSource(document);
FileOutputStream fos = new FileOutputStream(fileOutput);
StreamResult result = new StreamResult(fos);
transformer.transform(source, result);
Thanks in advance
The Transformer API does not guarantee the preservation of that information. You may want to check the DOM L3 Load/Save package (http://java.sun.com/javase/6/docs/api/index.html). Alternatively, you may force things by setting the additional output properties 'doctype-public' and 'doctype-system'.
Similar Messages
-
Converting Document object into XML file
I was wondering how to convert a document object to XML file? I have read the documentation about document and Node but nothing explains the procedure of the conversion. Ive been told that it can be done, but not sure how. I have converted an XML file into Document by parsing DocumentBuilder. Just not sure how to do the reverse. Any help appreciated.
TransformerFactory tf = TransformerFactory.newInstance();
Transformer trans = tf.newTransformer();
trans.transform(new DOMSource(yourDOMsRootNode), new StreamResult(new FileOutputStream(yourFileName)));or something a lot like that. -
Saving business objects into xml file
I have the following XML file parsed into a DOM tree, with 2 different types of nodes "TestCase" and
"RealCase". Then I mapped each type to a different type of business object, TestCaseObj and RealCaseObj.
Now, there may be addition of new objects, or modifications to the data stored in the business objects
by my application. Eventually when I save the business objects back into the XML file, how should I go
about doing that?
<ROOT>
<TestCase TestID="T1">
<Element1>Data1</Element1>
<Element2>Data2</Element2>
</TestCase>
<TestCase TestID="T2">
<Element1>Data1</Element1>
<Element2>Data2</Element2>
</TestCase>
<RealCase ID="R1">
<Element1>Data1</Element1>
<Element2>Data2</Element2>
<Element3>Data3</Element3>
</RealCase>
<RealCase ID="R2">
<Element1>Data1</Element1>
<Element2>Data2</Element2>
<Element3>Data3</Element3>
</RealCase>
</ROOT>The DocumentBuilder class does not allow you to parse a portion of the xmlfile. Therefore, it will not be possible to read "TestCase" into the DOM without bringing in "RealCase" nodes as well. As such, these codes will parse the entire xml file into DOM:
DocumentBuilder builder = builderFactory.newDocumentBuilder();
Document document = builder.parse( xmlFile );
However, your problem can be solved by reading only "TestCase" nodes in DOM, as follows:
NodeList elementNodeList =
elementNode.getElementsByTagName("TestCase");
Your codes will then change the data in the elementNodeList, without affecting "RealCase" although it is loaded into DOM. You can be sure that elementNodeList contains only "TestCase" nodes.
Once you have made your changes, save the DOM back to the XML file, using the serializer method as discussed earlier.
Good luck. -
API for converting a Java object into XML?
Do you know of any Java API that I could use to convert a Java
object into its equivalent XML representation?
For example if I have a class called "Foo" with variables va, vb
and I have an instance of Foo with va having the value 1 and vb
having the value 2, I would like be able to generate the
following XML fragment:
<Foo>
<va>1</va>
<vb>2</vb>
</Foo>
Thanks,
-- Rob
nullRob Tan (guest) wrote:
: Do you know of any Java API that I could use to convert a Java
: object into its equivalent XML representation?
: For example if I have a class called "Foo" with variables va,
vb
: and I have an instance of Foo with va having the value 1 and
vb
: having the value 2, I would like be able to generate the
: following XML fragment:
: <Foo>
: <va>1</va>
: <vb>2</vb>
: </Foo>
: Thanks,
: -- Rob
There is none that I know of.
Oracle XML Team
http://technet.oracle.com
Oracle Technology Network
null -
Problem in creatinga sales order idoc into XML file in the same appl server
Hai....friends....
I am tring to send an sales order as iDOC to a xml port in the same application server....
1. have created a xml port with path..\usr\sap\RRM\SYS\global\.
2. assigned it to logical system.
3.Have a RFC destination of TCP/ip(LOCAL_EXEC)
but in bd64 after creating model view when i am generating partner profiles a tRFC PORT has been automatically created.
then finally the IDOc has been created but its saying....IDOC CANNOT OR SHOULD NOT BE SENT...
Pls help me regarding this...
thx,
ramHi Thanks for your updates,
But I got the same error, while pass the data from abap into XML.
error message,what I am getting is
The XML page cannot be displayed
Cannot view XML input using style sheet. Please correct the error and then click the Refresh button, or try again later.
Invalid at the top level of the document. Error processing resource 'file:///C:/tempcustomers.xml'. Line 1, Position 1
#<?xml version="1.0" encoding="utf-16"?>
Thanks
Gowrishankar -
Conversion of DOM object to XML file
Hi
Is there a direct method for conversion of a Document object to xml file? My code is like this
Transformer aTransformer = tranFactory.newTransformer();
System.out.println("Tansformers :"+aTransformer);
aTransformer.setOutputProperty(OutputKeys.INDENT, "yes");
DOMSource src = new DOMSource(resultDocument);
System.out.println("src :"+src);
Result dest = new StreamResult(new FileOutputStream(new File(filepath)));
System.out.println("desc :"+dest);
aTransformer.transform(src, dest);
but the line DOMSource src = new DOMSource(resultDocument);
is giving me an error like "undefined constrctor" . what must be the problem?
ThanksDOMSource src = new DOMSource(resultDocument);
resultDocument should be of type org.w3c.Node -
Why we need to conver Context Node data into XML file----Export to Excel
Hi All,
Let me clarify my dought........today i have gone through the concept of "Exporting Context Data Using the Webdynpro Binary cache" in SAP Online Help.
From the SAP Online Help pdf document, i have found that, the context node data has been converted first in to XML file,after that file had been stored in the web dynpor binary cache...bla....bla.........
Here my qtn is why they had converted context node data into XML file. With out doing that can not we export context node data to excel file..?
Regards
Seshu
Edited by: Sesshanna D on Dec 19, 2007 7:25 AMHi Sesshanna,
it is not neccessary to do that but xml has the advantage, that it can be easily transformed into every output format that might occur in later project stages.
If it's simply about blowing out some Excel, I suggest using an OSS library such as jexcelAPI or Jakarta POI and building the Excel how you need it.
regards,
Christian -
Serializing Java Objects to XML files
Hi,
We looking for SAP library which can serialize Java Objects into XML files.
Can you point us were to find it ?
We have found such open source library called "XStream" at the following link
http://www.xml.com/pub/a/2004/08/18/xstream.html
Is it allowed to use that library inside SAP released software ?
Thanks
OritHow about https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/webcontent/uuid/83f6d2fb-0c01-0010-a2ba-a2ec94ba08f4 [original link is broken] [original link is broken]? Depends on your use cases...
Both are supported in SAP NW CE 7.1.
HTH!
-- Vladimir -
Store and load objects to XML files using DOM
Hello everybody,
a quick question for all of you.
I'm designing a desktop application which requires a lot of custom objects to be stored into XML files and later reloaded from them. I'm planning to use DOM, creating an interface like this:
public interface StorableAsDom
// Create an object from a DOM tree
static Object createFromDom(org.w3c.dom.Node root) throws InvalidDomException;
// Get the DOM tree for an object
org.w3c.dom.DocumentFragment getDomTree(org.w3c.dom.Document doc) throws DOMException;
Then, every class which needs to be saved should implement the above interface. This way everything works fine.
My question is: do you know any available java package which already provides similar functionalities?
I'd like not to reinvent the wheel if I can; time is always a critical factor.
Thanks in advance to all of you.
Cheers
marcocacoHi,
When I need object -xml binding, I usually have two methods -
one for reading & one for writing (the "VOs" below stands for "Value Objects" [getters/setters & empty constructor only]):
READ: loadXML (= XML2VOs)
1.XML2DOM - this method can be generic
2.DOM2VOs - populate your VOs from the DOM just obtained in 1.
WRITE: saveXML (=VOs2XML)
1.VOs2DOM - create a new DOM document from your VOs' fields.
2.DOM2XML - this method can be generic
It would be nice (but dificult & not very elegant) to make DOM2VOs & VOs2DOM generic. If such methods will be written, they should be combined with the XML2DOM & DOM2XML (resp.) & then you would have two generic methods XML2VOs & VOs2XML... (Alternativelly, you can get Sun's JAXB package which does object-xml binding but this is not part of the JDK 5)
If what I have outlined above sounds like what you want to do, let me know if you want more details (eg. how the DOM2VOs would be implemented etc)... -
How to convert database table into xml file
Hi.
How to convert database table into XML file in Oracle HTML DB.
Please let me know.
Thanks.This not really a specific APEX question... but I search the database forum and found this thread which I think will help
Exporting Oracle table to XML
If it does not I suggest looking at the database forum or have a look at this document on using the XML toolkit
http://download-east.oracle.com/docs/html/B12146_01/c_xml.htm
Hope this helps
Chris -
How can convert HTML file into xml file?
Hi,
I am receving one HTML file as an input and i want to convert that receiving(html file) into .xml file.Is there any converter (tools)to do this.Pls if any give me the details with regard.
Regards,
mahesh.Use the HTMLEditorKit to parse the html file.
this kit is having the callback methods which
are called wenever the tag appears in the HTML
stream. -
How should convert text file into XML file?
I do a project "WEB SERVER LOG ANALYZER" using JSP. For that i copy the content of log file into the other file . how i convert it into XML file . xplain with coding
Read this [page.|http://www.devx.com/getHelpOn/10MinuteSolution/20356]
-
How to convert Xls file into Xml file
Hi,
I am trying to convert Xls file into Xml but there is no any direct procedure for it
Pls help me out to convert Xls file into Xml file
Thanks
Anushreeyou will require to write a module in your file adapter for the same.
ref: /people/sap.user72/blog/2005/07/04/read-excel-instead-of-xml-through-fileadapter as mentioned in the earlier post.
Else you can also use Conversion Agent to read the same.
Ref: http://help.sap.com/saphelp_nw04/helpdata/en/43/4c38c4cf105f85e10000000a1553f6/content.htm -
How to convert Java Objects into xml?
Hello Java Gurus
how to convert Java Objects into xml? i heard xstream can be use for that but i am looking something which is good in performance.
really need your help guys.
thanks in advance.There are apparently a variety of Java/XML bindings. Try Google.
And don't be so demanding. -
Unmarshalling a DOM node to an XML file with JAXB
I'm trying to unmarshall a DOM node to an XML file using JAXB. However I keep receiving a NullPointerException. This only seems to occur when I create the DOM Node from scratch. The stack trace looks like the following:
java.lang.NullPointerException
at com.sun.xml.bind.unmarshaller.SAXUnmarshallerHandlerImpl.startElement
(SAXUnmarshallerHandlerImpl.java:87)
at com.sun.xml.bind.unmarshaller.DOMScanner.visit(DOMScanner.java:109)
at com.sun.xml.bind.unmarshaller.DOMScanner.parse(DOMScanner.java:64)
at com.sun.xml.bind.unmarshaller.UnmarshallerImpl.unmarshal(Unmarshaller
Impl.java:149)
at Main.main(Main.java:103)(If I unmarshal an XML file into a DOM node, I can successfully marshall the DOM node out to a new XML file using JAXB without error.)
Any insight into what I am doing wrong would be greatly appreciated!
Sample code and XSD follow...
Sample Code:
import itemlistsample.*;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Iterator;
import java.util.List;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.DocumentBuilder;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
import org.w3c.dom.Node;
import org.w3c.dom.Text;
public class Main
public static void main(String[] args)
try
JAXBContext jc = JAXBContext.newInstance( "itemlistsample" );
Unmarshaller u = jc.createUnmarshaller();
* Set up DOM Node Document Object.
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
dbf.setNamespaceAware(true);
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.newDocument();
System.out.println();
System.out.println();
System.out.println("Create a DOM Node and unmarshall to an XML file");
* Generate elements within DOM document
Element itemListElt = (Element)doc.createElement("item_list");
Element itemInfo = (Element)doc.createElement("item_info");
Element name = (Element)doc.createElement("name");
Element price = (Element)doc.createElement("price");
* 3-Ring Binder @ 4.99
name.appendChild(doc.createTextNode("3-Ring Binder"));
itemInfo.appendChild(name);
price.appendChild(doc.createTextNode("4.99"));
itemInfo.appendChild(price);
itemListElt.appendChild(itemInfo);
* Large Paper Clips @ 1.23
itemInfo = (Element)doc.createElement("item_info");
name = (Element)doc.createElement("name");
price = (Element)doc.createElement("price");
name.appendChild(doc.createTextNode("Large Paper Clips"));
itemInfo.appendChild(name);
price.appendChild(doc.createTextNode("1.23"));
itemInfo.appendChild(price);
itemListElt.appendChild(itemInfo);
doc.appendChild(itemListElt);
* Display DOM document as a sanity check
itemListElt = doc.getDocumentElement();
System.out.println(itemListElt.getTagName());
NodeList nl = itemListElt.getElementsByTagName("item_info");
traverse(" ", nl.item(0));
* Use JAXB to unmarshal the DOM document into
* an instance of the generated JAXB class for
* the root element. Stack trace occurs here!
ItemListType il = (ItemListType)u.unmarshal(doc);
* Marshal to an XML file
Marshaller m = jc.createMarshaller();
m.setProperty( Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE );
m.marshal( il, new FileOutputStream("item_new.xml") );
catch (Exception e)
e.printStackTrace();
public static void traverse(String indent, Node n)
if (n != null)
if (n.getNodeName() != null)
System.out.println(indent + n.getNodeName());
traverse(indent + " ", n.getFirstChild());
if (n.getNodeValue() != null)
System.out.println(indent + n.getNodeValue());
traverse(indent, n.getNextSibling());
}Sample XSD:
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="item_list" type="ItemListType"/>
<xsd:complexType name="ItemListType">
<xsd:sequence>
<xsd:element name="item_info" type="ItemInfoType" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="ItemInfoType">
<xsd:sequence>
<xsd:element name="name" type="xsd:string"/>
<xsd:element name="price" type="xsd:double"/>
</xsd:sequence>
</xsd:complexType>
</xsd:schema>Modified schema
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="item_list">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="item_info" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="item_info">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="name" type="xsd:string"/>
<xsd:element name="price" type="xsd:double"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
Maybe you are looking for
-
How to set up two iPads, different locations, one account.
How do I set up two iPads in two different States with one account. My 89 year old father can not do the details of setting up an account but I want him to have apps and have even gifted him a bird guide. Now it sits in his in box because we don't
-
Connecting wirelessly with other computers including pcs in my home network
my home network is set up wirelessly through my linksys router with 2 pcs (vista) an ibook and an iMac. My pc recognizes the iMac but when I go to open the public folder it says "Windows cannot access...". When I run diagnostics, it says make sure yo
-
Auto Populate Field in One Table with Primary Key from another table.
Greetings all, I have created two tables. One for Root Cause which will be the based description information of an analysis. Each Root cause can have many corrective actions. My Table structure is as follows: RCCA TABLE: =============================
-
Direct link to an Episode?
There needs to be an easy, intuitive way for me to directly share an episode with a friend and NOT the entire podcast. So often I am listening to a podcast and think, "Jim would really like this one" but I have to type in the name and date of the act
-
Using Kerberos as a password store?
We are looking at using Kerberos as a backend password store for all enterprise systems (SunOne LDAP, AD, OID/Oracle). Is it possible (via external plugin/application or other means) to have OID pass the authentication part off to a Kerberos server?