---
title: "Skriva och läsa XML-filer"
type: "forum-thread"
url: "https://www.webforum.nu/amne/dotnet/184203-skriva-och-läsa-xml-filer"
topic: ".NET"
topic_url: "https://www.webforum.nu/amne/dotnet"
author: "saw"
published: "2010-07-29T18:29:08.000Z"
updated: "2010-07-30T15:05:04.000Z"
replies: 2
views: 634
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/184203-skriva-och-läsa-xml-filer"
---

# Skriva och läsa XML-filer

## #1 — saw, 2010-07-29T18:29Z

Jag har följande kod

```
 string sString = Application.StartupPath.ToString() + "\\Settings.xml";

            FileStream fs = new FileStream(sString, FileMode.Create);
            XmlWriter w = XmlWriter.Create(fs);

            w.WriteStartDocument();
            w.WriteStartElement(sFactionPath);

            w.WriteAttributeString(sFactionPath, null);
            w.WriteElementString("path", sPath);
            w.WriteEndElement();

            w.WriteEndDocument();
            w.Flush();
            fs.Close();
```

som generera detta

```
<?xml version="1.0" encoding="utf-8" ?> 
- <Faction_path Faction_path="">
  <path>D:\Sparade_Filer\förSpel\TotalWar\Napoleon\Factions\
Oldenburg_Mecklenburg_Saxony_Hessen</path> 
  </Faction_path>
```

Jag för följande felmedelande
**XML document must contain a root level element.**	
Nu är det så att jag kommer att behöva uppdatera och det med andra
startelement/attripute, kan jag använda samma teknik?

Jag har också letat men hittar inte på vilket sätt som jag skall göra för att
kunna läsa detta, förslag motages tacksamt.

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

## #2 — GunnarD, 2010-07-30T09:35Z

Du behöver ett "element" som hela din xml data finns i:

Ex. i nedanstående kod \<Spel\>\</Spel\>

```
<?xml version="1.0" encoding="utf-8" ?> 
<Spel>
- <Faction_path Faction_path="">
  <path>D:\Sparade_Filer\förSpel\TotalWar\Napoleon\Factions\
Oldenburg_Mecklenburg_Saxony_Hessen</path> 
  </Faction_path>
</Spel>
```

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

## #3 — saw, 2010-07-30T15:05Z

Jo jag hittade lite mera info så nu gör jag så här:

```
//skapa dokumentet
public static string WriteXMLDocument(string what, string path)
        {//skriva XML fungerar bra
            string sDoc = Application.StartupPath.ToString() + "\\Settings.xml";
            if (what == "new")
            {
                XmlWriterSettings settings = new XmlWriterSettings { Encoding = Encoding.UTF8, Indent = true };
                XmlWriter writer = XmlWriter.Create(sDoc, settings);
                writer.WriteStartElement("settingdoc");
                writer.WriteStartElement("Faction");
                writer.WriteStartElement("Faction_Path");
                writer.WriteString("Factionpath");
                writer.WriteEndElement();
                writer.WriteEndElement();
                writer.WriteStartElement("Mod");
                writer.WriteStartElement("Mod_Path");
                writer.WriteString("Modpath");
                writer.WriteEndElement();
                writer.WriteEndElement();
                writer.WriteEndElement();
                writer.WriteEndDocument();
                writer.Flush();
                writer.Close();
            }
            return what;
        } 
//Läsa dokumentet
public static string ReadXMLDocument(string what)
        {//lÃ¤sa XML fungerar bra
            string sDoc = Application.StartupPath.ToString() + "\\Settings.xml";
            XmlReaderSettings settings = new XmlReaderSettings { IgnoreComments = true, IgnoreWhitespace = true };
            XmlReader reader = XmlReader.Create(sDoc, settings);
            string sText = "";
            string newText = "";
            while (reader.Read())
            {
                if (reader.NodeType == XmlNodeType.Element)
                {
                    sText = reader.Name;
                    if (sText == what)
                    {
                        newText = reader.ReadElementString();
                    }
                }
            }
            reader.Close();
            return newText;
        }

//uppdatera dokumentet
public static string UppdateXML(string what, string path)
        {//Uppdatera XML fungerar bra
            try
            {
                string sDoc = Application.StartupPath.ToString() + "\\Settings.xml";
                XmlDocument myXmlDocument = new XmlDocument();
                myXmlDocument.Load(sDoc);
                XmlNode node;
                node = myXmlDocument.DocumentElement;
                foreach (XmlNode node1 in node.ChildNodes)
                    foreach (XmlNode node2 in node1.ChildNodes)
                        if (node2.Name == what)
                        {
                            node2.InnerText = path;
                        }
                myXmlDocument.Save(sDoc);
            }
            catch (Exception fel)
            {
                MessageBox.Show(fel.Message);
            }
            return what;
        }
```

Det fungerar nu kanon.
(Jag la in koderna om någon annan fundera på liknande).  :bire

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

---

Tråden på webben: https://www.webforum.nu/amne/dotnet/184203-skriva-och-läsa-xml-filer
