By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
449,004 Members | 1,167 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 449,004 IT Pros & Developers. It's quick & easy.

Delete attribute from XML document using XPathNodeIterator

P: n/a
I'm trying to iterate through a set of nodes and then edit/delete
specific attributes using XPathNodeIterator. Adding attributes is no
problem.

My first question is how do I delete an attribute using an
XPathNodeIterator? Or should I be using something else?

In the sample that follows:
1. Grab all "Page" nodes.
2. Loop through all the nodes.
3. delete the "lastModified" attribute.
4. Will eventually just want to edit the "lastModified" attribute.

C#3/x
Sample method:
public void test()
{
XPathDocument doc = new XPathDocument( "pathToXML" );
XPathNavigator nav = doc.CreateNavigator();
XPathNodeIterator iterator = nav.Select( "//Section/Page" );
while( iterator.MoveNext() )
{
XPathNavigator node = iterator.Current;
string lastModifiedAttribute =
node.GetAttribute( "lastModified", "" );

// Actions will vary, but will consist of:
// 1. add attribute
// 2. delete attribute
// 3. edit attribute
}
}
Sample XML:
<?xml version="1.0"?>
<SiteMap>
<Section>
<Page nav="topic1" lastModified="20081005" />
<Page nav="topic2" lastModified="20081001" />
</Section>
<Section>
<Page nav="topic3" lastModified="20081002" />
<Section>
<Page nav="topic4" lastModified="20081004" />
<Section>
<Page nav="topic5" lastModified="20081003" />
<Page nav="topic6" lastModified="20081009" />
</Section>
</Section>
</Section>
<Section>
<Page nav="topic7" lastModified="20081012" />
<Page nav="topic8" lastModified="20081015" />
<Page nav="topic9" lastModified="20081007" />
</Section>
</SiteMap>
Thanks in advance!
::k::
Jun 27 '08 #1
Share this Question
Share on Google+
6 Replies


P: n/a
Kindler Chase wrote:
I'm trying to iterate through a set of nodes and then edit/delete
specific attributes using XPathNodeIterator. Adding attributes is no
problem.

My first question is how do I delete an attribute using an
XPathNodeIterator? Or should I be using something else?

In the sample that follows:
1. Grab all "Page" nodes.
2. Loop through all the nodes.
3. delete the "lastModified" attribute.
4. Will eventually just want to edit the "lastModified" attribute.

C#3/x
Sample method:
public void test()
{
XPathDocument doc = new XPathDocument( "pathToXML" );
First problem is that XPathDocument is read only !

You need to switch to XmlDocument. It should not be a
problem to do what you want on an XmlElement.

Arne
Jun 27 '08 #2

P: n/a
Arne Vajhøj wrote:
Kindler Chase wrote:
>I'm trying to iterate through a set of nodes and then edit/delete
specific attributes using XPathNodeIterator. Adding attributes is no
problem.

My first question is how do I delete an attribute using an
XPathNodeIterator? Or should I be using something else?

In the sample that follows:
1. Grab all "Page" nodes.
2. Loop through all the nodes.
3. delete the "lastModified" attribute.
4. Will eventually just want to edit the "lastModified" attribute.

C#3/x
Sample method:
public void test()
{
XPathDocument doc = new XPathDocument( "pathToXML" );

First problem is that XPathDocument is read only !

You need to switch to XmlDocument. It should not be a
problem to do what you want on an XmlElement.

Arne
Sorry for the mis-post, it actually *is* an XmlDocument - when I wrote
up the example, I mis-typed.

The problem still remains - when iterating through the nodes with the
XPathNodeiterator, I am unable to delete an attribute. Can you post an
example of iterating through and deleting an attribute?

Thanks!
::k::

Jun 27 '08 #3

P: n/a
Arne Vajhøj wrote:
Kindler Chase wrote:
>I'm trying to iterate through a set of nodes and then edit/delete
specific attributes using XPathNodeIterator. Adding attributes is no
problem.

My first question is how do I delete an attribute using an
XPathNodeIterator? Or should I be using something else?

In the sample that follows:
1. Grab all "Page" nodes.
2. Loop through all the nodes.
3. delete the "lastModified" attribute.
4. Will eventually just want to edit the "lastModified" attribute.

C#3/x
Sample method:
public void test()
{
XPathDocument doc = new XPathDocument( "pathToXML" );

First problem is that XPathDocument is read only !

You need to switch to XmlDocument. It should not be a
problem to do what you want on an XmlElement.
Code snippet:

XmlDocument doc = new XmlDocument();
doc.LoadXml(xml);
doc.Save(Console.Out);
foreach(XmlNode n in doc.SelectNodes("//*[@lastModified]"))
{
n.Attributes.RemoveNamedItem("lastModified");
}

Arne
Jun 27 '08 #4

P: n/a
Kindler Chase wrote:
Arne Vajhøj wrote:
>Kindler Chase wrote:
>>I'm trying to iterate through a set of nodes and then edit/delete
specific attributes using XPathNodeIterator. Adding attributes is no
problem.

My first question is how do I delete an attribute using an
XPathNodeIterator? Or should I be using something else?

In the sample that follows:
1. Grab all "Page" nodes.
2. Loop through all the nodes.
3. delete the "lastModified" attribute.
4. Will eventually just want to edit the "lastModified" attribute.

C#3/x
Sample method:
public void test()
{
XPathDocument doc = new XPathDocument( "pathToXML" );

First problem is that XPathDocument is read only !

You need to switch to XmlDocument. It should not be a
problem to do what you want on an XmlElement.

Sorry for the mis-post, it actually *is* an XmlDocument - when I wrote
up the example, I mis-typed.
Always copy paste the real code !
The problem still remains - when iterating through the nodes with the
XPathNodeiterator, I am unable to delete an attribute. Can you post an
example of iterating through and deleting an attribute?
Just posted an example.

Arne
Jun 27 '08 #5

P: n/a
Arne Vajhøj wrote:
>Sorry for the mis-post, it actually *is* an XmlDocument - when I wrote
up the example, I mis-typed.

Always copy paste the real code !
Will do :)
>The problem still remains - when iterating through the nodes with the
XPathNodeiterator, I am unable to delete an attribute. Can you post an
example of iterating through and deleting an attribute?

Just posted an example.
Thanks for the post/example! I'll hit it again tomorrow.

::k::
Jun 27 '08 #6

P: n/a
Arne Vajhøj wrote:
Code snippet:

XmlDocument doc = new XmlDocument();
doc.LoadXml(xml);
doc.Save(Console.Out);
foreach(XmlNode n in doc.SelectNodes("//*[@lastModified]"))
{
n.Attributes.RemoveNamedItem("lastModified");
}
Thanks Arne! It's all sorted out now. Appreciate your help.

::k::
Jun 27 '08 #7

This discussion thread is closed

Replies have been disabled for this discussion.