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 -~----------~----~----~----~------~----~------~--~---