---
title: "skapa nya element/poster i xml med c#"
type: "forum-thread"
url: "https://www.webforum.nu/amne/xml/185256-skapa-nya-element-poster-i-xml-med-c"
topic: "XML"
topic_url: "https://www.webforum.nu/amne/xml"
author: "Sanji"
published: "2010-11-15T15:46:16.000Z"
updated: "2010-11-19T14:43:56.000Z"
replies: 2
views: 984
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/xml/185256-skapa-nya-element-poster-i-xml-med-c"
---

# skapa nya element/poster i xml med c#

## #1 — Sanji, 2010-11-15T15:46Z

Hej! Jag ska skriva till en xml-fil nu för första gången, tidigare har jag endast använt xml-filer för att läsa redan existerande data så att skriva till en xml-fil är lite av ett mysterium för mig just nu.

Xml-filen ser ut så här:

```
<?xml version="1.0" encoding="utf-8"?>
<staticinquirytexts>
  <text>
    <companyID>a49d7f13-caa6-49a7-8dc7-5452ea7bf097</companyID>
    <SV>Statisk förfrågantext på Svenska</SV>
    <EN>Static inquirytext in English</EN>
  </text>
</staticinquirytexts>
```

det är denna som jag vill kunna skapa med c#:

```
<text>
    <companyID>a49d7f13-caa6-49a7-8dc7-5452ea7bf097</companyID>
    <SV>Statisk förfrågantext på Svenska</SV>
    <EN>Static inquirytext in English</EN>
  </text>
```

jag lyckas skapa nya nodes med createNode, men jag vet inte hur jag ska göra så att \<companyID\>, \<SV\> och \<EN\> blir childnodes till \<text\>...

jag har börjat skriva en klass för att hantera min xml-fil:

```
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data.Common;
using System.Xml;
using System.Text.RegularExpressions;
using SmartOff_2011.Database;
using System.IO;
using System.Text;

namespace SmartOff_2011.Localization
{
    public class staticinquirytext
    {
        private string filepath;
        private HttpServerUtility _Server;

        public staticinquirytext(HttpServerUtility Server, Language lang)
        {
            this._Server = Server;
            this.filepath = _Server.MapPath("~/App_Data/Localization/staticinquirytext.xml");

        }

        public string GetInquirytext(string companyID, string lang)
        {

            XmlDocument xmlDoc = new XmlDocument();
            xmlDoc.Load(filepath);
            foreach (XmlNode node in xmlDoc.LastChild.ChildNodes)
            {
                if (node.Attributes["companyID"].Value == companyID)
                {
                    return _Server.HtmlDecode(node.Attributes[lang].Value.ToString());
                }
            }
            throw new Exception("Kunde inte hitta någon text med FöretagsID: " + companyID);
        }
        public void WriteInquirytext(string companyID)
        {

            XmlDocument xmlDoc = new XmlDocument();
            xmlDoc.Load(filepath);
            
            XmlNode newNode = xmlDoc.CreateNode(XmlNodeType.Element, "text", "");
            //newNode.InnerText = "";
            xmlDoc.DocumentElement.AppendChild(newNode);        
            
            newNode = xmlDoc.CreateNode(XmlNodeType.Element, "companyID", "");
            newNode.InnerText = companyID;
            
            xmlDoc.DocumentElement.AppendChild(newNode);
            newNode = xmlDoc.CreateNode(XmlNodeType.Element, "SV", "");
            xmlDoc.DocumentElement.AppendChild(newNode);
            newNode = xmlDoc.CreateNode(XmlNodeType.Element, "EN", "");
            xmlDoc.DocumentElement.AppendChild(newNode);
            newNode = xmlDoc.CreateNode(XmlNodeType.Element, "text", "");
            xmlDoc.DocumentElement.AppendChild(newNode);
    
            xmlDoc.Save(filepath);              
        }
    }
}
```

Så är det någon som kan vägleda mig i hur jag får önskat resultat?

Mvh Sanji

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

## #2 — Sanji, 2010-11-19T14:29Z

nu har jag löst det problemet, men nu måste jag också kunna söka igenom xml-filen för att se om det finns en ID-node med ett speciellt ID. Det sparas som inner text i noden. Så hur gör man det? Jag letade efter en contains() metod, men det fanns ingen vad jag kunde se.

Mvh Sanji

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

## #3 — SPiN, 2010-11-19T14:43Z

XPath borde vara det lämpligaste.

```
string ID = "a49d7f13-caa6-49a7-8dc7-5452ea7bf097";

XPathDocument Doc = new XPathDocument("din-xml-fil.xml");
XPathNavigator navigator = Doc.CreateNavigator();
XPathNavigator node = navigator.SelectSingleNode("/path/to/text[companyID='" + ID + "']");
Console.WriteLine(node.InnerXml);
```

Möjligtvis.

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

---

Tråden på webben: https://www.webforum.nu/amne/xml/185256-skapa-nya-element-poster-i-xml-med-c
