---
title: "XmlDocument & XmlTextReader"
type: "forum-thread"
url: "https://www.webforum.nu/amne/dotnet/64285-xmldocument-xmltextreader"
topic: ".NET"
topic_url: "https://www.webforum.nu/amne/dotnet"
author: "peterbladh"
published: "2003-01-09T08:36:21.000Z"
updated: "2003-01-09T13:21:39.000Z"
replies: 4
views: 200
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/dotnet/64285-xmldocument-xmltextreader"
---

# XmlDocument & XmlTextReader

## #1 — peterbladh, 2003-01-09T08:36Z

Hej

Jag jobbar i Compact Framework och har ett Xml Document som jag vill ta bort ett element + subelement i.

Jag har testat att iterera (Read()) en XmlTextReader och när jag kommer fram till rätt element köra load på ett XmlDocument. Följande fel uppstår då:

System.InvalidOperationException:this document already has a document element node

Här är koden:

```
public void DeleteView(string viewName)
		{
	
			XmlDocument xdoc = new XmlDocument();
			
			XmlTextReader xtr = new XmlTextReader(FILEPATH);
		
			xtr.MoveToContent();
			while(xtr.Read())
			{
				if (xtr.NodeType == XmlNodeType.Element && xtr.Name == "View")
				{
					if (viewName == xtr.GetAttribute("name"))
					{
						xdoc = new XmlDocument();
						xdoc.Load(xtr);
						xdoc.RemoveAll();
						xdoc.Save(FILEPATH);
						break;
					}
				}
			}
		}
```

Det är på raden \>\> xdoc.Load(xtr); \<\< som felet uppstår.

Tacksam för hjälp!

Permalänk: https://www.webforum.nu/p/64285

## #2 — peterbladh, 2003-01-09T08:46Z

... Jag vet att anledningen till att det blir fel är att det finns flera element i dokumentet heter "view", men det skall det ju, så jag behöver alltså hjälp att kringgå det.

Hittade även ett annat problem; raden \>\> xdoc.Save(FILEPATH); 
\<\< sparar ju inte rätt grejer (det genereras ett felmeddelande - ... the document doesn't have a root element). Hur gör jag för att spara "rätt"? Alltså allt förutom det jag tog bort.

Permalänk: https://www.webforum.nu/p/908123

## #3 — peterbladh, 2003-01-09T12:46Z

Jag löste det på ett annat sätt;

```
XmlDocument doc = new XmlDocument();
			doc.Load(FILEPATH);
			XmlNodeList list = doc.GetElementsByTagName("View");
			for (int i=0; i<list.Count; i++)
			{
				XmlElement elem = (XmlElement)list.Item(i);
				if (elem.GetAttribute("name") == viewName)
				{
					doc.DocumentElement.RemoveChild((XmlNode)elem);
					doc.Save(FILEPATH);
					break;
				}
			}
```

Är iof fortfarande intresserad av hur man löser det med det första sättet - kan vara bra nån gång, kanske...

Permalänk: https://www.webforum.nu/p/908303

## #4 — developer, 2003-01-09T13:14Z

Använd \[ kod \] taggen när du postar kod, så blir det lättare att läsa, se: <http://www.webforum.nu/misc.php?s=&action=bbcode>

Permalänk: https://www.webforum.nu/p/908319

## #5 — peterbladh, 2003-01-09T13:21Z

Ok, jag redigerar...

Permalänk: https://www.webforum.nu/p/908323

---

Tråden på webben: https://www.webforum.nu/amne/dotnet/64285-xmldocument-xmltextreader
