I guess you are trying to use a Transformer to convert a Document to an xml String? Here's some more quick&dirty code for it:
public String getXml(Node node) { StringBuilder buffer = new StringBuilder(); if (node == null) { return ""; } if (node instanceof Document) { buffer.append(getXml(((CustomDocument)node).getFirstChild())); } else if (node instanceof Element) { Element element = (Element)node; buffer.append("<"); buffer.append(element.getNodeName()); if (element.hasAttributes()) { NamedNodeMap map = element.getAttributes(); for (int i = 0; i < map.getLength(); i++) { Node attr = map.item(i); buffer.append(attr.getNodeName()); buffer.append("=\""); buffer.append(attr.getNodeValue()); buffer.append("\" "); } } buffer.append(">"); NodeList children = element.getChildNodes(); for (int i = 0; i < children.getLength(); i++) { buffer.append(getXml(children.item(i))); } buffer.append("</"); buffer.append(element.getNodeName()); buffer.append(">"); } else if (node != null && node.getNodeValue() != null) { buffer.append(node.getNodeValue()); } return buffer.toString(); } On Mar 25, 8:23 am, "Vesin Duško" <[EMAIL PROTECTED]> wrote: > Tnx Dan, i have another problem, > > Android does not have TransformerFactory class so how to get data from > generated document? > > It would be nice if I can get at list some string that contains XML. > > On 24/03/2008, Dan U. <[EMAIL PROTECTED]> wrote: > > > > > > > I didn't see a solution for the xml attribute namednodemap == null > > issues, so I decided to go ahead and fix it with some custom classes. > > I'm sure Google will get it fixed, but in case they don't in time for > > the ADC submission, some people might want a solution now. It's real > > quick&dirty, so if something doesn't work, that's why. Anyway, here > > you go... > > > Two things to note: > > > 1. Keep the package names or it won't work. > > 2. I'm no longer using a factory to build the documentbuilder. You can > > probably change this, but it was simpler this way. Here's how you use > > it: > > DocumentBuilder builder = new CustomDocumentBuilder(); and then just > > use it like a normal DocumentBuilder. > > > package android.xml.parsers; > > import org.w3c.dom.Document; > > import android.xml.dom.CustomDocument; > > import android.xml.dom.DOMImplementationImpl; > > > public class CustomDocumentBuilder extends DocumentBuilderImpl { > > > public CustomDocumentBuilder() { > > super(); > > } > > > @Override > > public Document newDocument() { > > return new > > CustomDocument((DOMImplementationImpl)super.getDOMImplementation(), > > null, null, null); > > } > > } > > > package android.xml.dom; > > import org.w3c.dom.DOMException; > > import org.w3c.dom.DocumentType; > > import org.w3c.dom.Element; > > > public class CustomDocument extends DocumentImpl { > > public CustomDocument(DOMImplementationImpl impl, String > > namespaceURI, > > String qualifiedName, DocumentType doctype) { > > super(impl, namespaceURI, qualifiedName, doctype); > > } > > > @Override > > public Element createElement(String tagName) throws DOMException { > > return new CustomElement(this, tagName); > > } > > > @Override > > public Element createElementNS(String namespaceURI, String > > qualifiedName) > > throws DOMException { > > return new CustomElement(this, namespaceURI, > > qualifiedName); > > } > > } > > > package android.xml.dom; > > > import org.w3c.dom.Attr; > > import org.w3c.dom.DOMException; > > import org.w3c.dom.Document; > > import org.w3c.dom.NamedNodeMap; > > > public class CustomElement extends ElementImpl { > > > private NamedNodeMap mAttributes = new NamedNodeMapImpl(); > > > public CustomElement(Document document, String namespaceURI, > > String qualifiedName) { > > super(document, namespaceURI, qualifiedName); > > } > > > public CustomElement(Document document, String tagName) { > > super(document, tagName); > > } > > > @Override > > public void setAttribute(String name, String value) throws > > DOMException { > > super.setAttribute(name, value); > > mAttributes.setNamedItem(getAttributeNode(name)); > > } > > > @Override > > public Attr setAttributeNode(Attr newAttr) throws DOMException { > > mAttributes.setNamedItem(newAttr); > > return super.setAttributeNode(newAttr); > > } > > > @Override > > public Attr setAttributeNodeNS(Attr newAttr) throws DOMException { > > mAttributes.setNamedItemNS(newAttr); > > return super.setAttributeNodeNS(newAttr); > > } > > > @Override > > public void setAttributeNS(String namespaceURI, String > > qualifiedName, > > String value) throws DOMException { > > super.setAttributeNS(namespaceURI, qualifiedName, value); > > mAttributes.setNamedItemNS > > (getAttributeNodeNS(namespaceURI, > > qualifiedName)); > > } > > > @Override > > public NamedNodeMap getAttributes() { > > return mAttributes; > > } > > > @Override > > public boolean hasAttributes() { > > return mAttributes.getLength() > 0; > > > } > > } > > > On Mar 24, 1:12 pm, "Dan U." <[EMAIL PROTECTED]> wrote: > > > There definitely is an issue with attributes which won't let you > > > access them unless you know their names beforehand. If that isn't a > > > problem, then it's easy to write some code to give you back an Xml > > > string from a Document. > > > > On Mar 24, 12:09 pm, "Dexter's Brain" <[EMAIL PROTECTED]> wrote: > > > > > Hey Vishal, > > > > > This code will work with JDK.....But, currently, there is some problem > > > > with the android SDK. > > > > > The NamedNodeMap doesn't work....I dont know how did you test it on > > > > android. There is also a bug reported for this issue with the SDK.. I > > > > guess.....I tried using this, but it never worked for me....Lot of > > > > other people are also having this problem...... > > > > > Dexter. > > > > > vishal wrote: > > > > > I think i have a code for this which is general with any DOM > > document > > > > > type... > > > > > > Here initially you have to pass root element. Plz tell me if im > > > > > wrong.... and if errors in the code.. or any way to improve that > > > > > > private void addTagToTheFile(Element elem) throws IOException { > > > > > NamedNodeMap elemAttributes = elem.getAttributes > > (); > > > > > StringBuffer elemTagTowrite = new StringBuffer(); > > > > > Node attribute ; > > > > > elemTagTowrite.append("<"+elem.getTagName()); > > > > > if(elemAttributes!=null){ > > > > > Log.i(elem.getTagName > > (),""+elemAttributes.getLength()); > > > > > int noOfAttributesInTag = > > elemAttributes.getLength(); > > > > > for(int counter=0; counter < > > noOfAttributesInTag; counter++){ > > > > > attribute = elemAttributes.item > > (counter); > > > > > elemTagTowrite.append(" " + > > attribute.getNodeName() + > > > > > " = \"" + > > attribute.getNodeValue()+"\""); > > > > > } > > > > > } > > > > > elemTagTowrite.append(">"+'\n'); > > > > > outputFileWriter.write(elemTagTowrite.toString > > ()); > > > > > NodeList childElements = elem.getChildNodes(); > > > > > int noOfchildElements = childElements.getLength > > (); > > > > > for(int counter=0; counter < noOfchildElements; > > counter++){ > > > > > > if(childElements.item > > (counter).getClass().toString().contains("Element")) > > > > > { > > > > > Node childNode = > > (Element)childElements.item(counter); > > > > > Element childElement = > > (Element)childNode; > > > > > addTagToTheFile(childElement); > > > > > } > > > > > } > > > > > elemTagTowrite.delete(0, elemTagTowrite.length > > ()); > > > > > elemTagTowrite.append("</" + elem.getTagName() + > > ">"); > > > > > outputFileWriter.write(elemTagTowrite.toString > > ()); > > > > > outputFileWriter.write('\n'); > > > > > } > > > > > } > > > > > > On Mar 24, 9:59 pm, "Dexter's Brain" <[EMAIL PROTECTED]> wrote: > > > > > > Hello Vesin, > > > > > > > I can give you the code, but its not a generalized one. It will > > work > > > > > > only for my XML file format. I dont think it will help u. > > > > > > > On Mar 24, 8:32 pm, "Vesin Du�ko" <[EMAIL PROTECTED]> wrote: > > > > > > > > Can you share your code with as? > > > > > > > > On 16/03/2008, Dexter's Brain <[EMAIL PROTECTED]> wrote: > > > > > > > > > Hi Nitin, > > > > > > > > > I think this is not possible with the current SDK. We should > > wait till > > > > > > > > some more packages are added to the SDK. Till then, everything > > has to > > > > > > > > be done manually. > > > > > > > > After banging my head for hours, I wrote a method that would > > convert a > > > > > > > > DOM document object to an xml file. It wasn't very difficult > > though. > > > > > > > > > Dexter. > > > > > > > > -- > > -- > > Vesin Duško > Software Developer at Execom > > email: > [EMAIL PROTECTED] > [EMAIL PROTECTED] > [EMAIL PROTECTED] --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Android Developers" group. To post to this group, send email to android-developers@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] Announcing the new M5 SDK! http://android-developers.blogspot.com/2008/02/android-sdk-m5-rc14-now-available.html For more options, visit this group at http://groups.google.com/group/android-developers?hl=en -~----------~----~----~----~------~----~------~--~---