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

Reply via email to