[Home] [By Thread] [By Date] [Recent Entries]

  • To: xml-dev@l...
  • Subject: adding new attribute to an existing xml fileusing JAXP with DOM
  • From: Rahil <qamar_rahil@y...>
  • Date: Fri, 05 Aug 2005 15:58:54 +0100
  • Reply-to: qamar_rahil@y...
  • User-agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.2) Gecko/20040804 Netscape/7.2 (ax)

Hi

This is my first post to this forum and Im hoping to get some 
suggestions as Im completely exhausted trying to resolve my query.

My query is to add a new attribute to a selected node in an existing xml 
file.

I have a test.xml file whose structure is such:

<Top>
    <Tags>
         <Tag id="123" name="Home">
            <Value>Inner Text</Value>
        </Tag>
    </Tags>
</Top>

Now using the JAXP DocumentBuilder I am able to access the attribute 
@name from the <Tag> node. I then want to insert a new attribute 
@new="some value" to this <Tag> node. But despite trying out several 
options Im not able to. I want to do something similar with the <Value> 
node as well and append some InnerText to the existing one.

My code so far is:
--------------------------------
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document doc = builder.parse(test.xml);

NodeList list = doc.getElementsByTagName("Tag");

for(int i=0; i<list.getLength();i++){
Element tagNode = (Element)list.item(i); //<Tag>
nm = tagNode.getAttributes();

for(int j=0;j<nm.getLength();j++){
    Node ndNm = nm.item(j); // id, name --attributes names
    nodeLocNm = ndNm.getNodeName();

    if(nodeLocNm.equals(new String("name"))){
        String nodeVal = nm.item(j).getNodeValue(); //@name value -- do 
something
        String newRes = "new value";
        tagNode.setAttribute("new", "new value");
    }
}
}

--------------------------------------------------

Of course no attribute @name gets added to test.xml which is my problem !

Could someone please help.

Thanks in advance to everyone for helping out!
Rahil


Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member