Avatar billede wired Nybegynder
10. juli 2006 - 00:50 Der er 5 kommentarer og
1 løsning

xml.InsertBefore

Jeg har følgende xml-fil:
<personer>
  <person>Nr. 1</person>
</personer>

og vil gerne indsætte en <person>nr.0</person> ind foran Nr.1

Jeg lavet følgende (hvor XMLDS er et dataset)

XmlDocument XMLDoc = new XmlDataDocument(XMLDS);
XmlElement NewNode = XMLDoc.CreateElement("person");
NewNode.InnerText = "Nr.0";
XMLDoc.DocumentElement.InsertBefore(NewNode,XMLDoc.DocumentElement.FirstChild);

Men det virker ikke, det bliver stadig indsat efter Nr.1

Nogen som har en god idé?
Avatar billede arne_v Ekspert
10. juli 2006 - 01:00 #1
det forstår jeg ikke

using System;
using System.Xml;

namespace E
{
    public class MainClass
    {
        public static void Main(string[] args)
        {
            string s = @"<personer>
  <person>Nr. 1</person>
</personer>";
            XmlDocument doc = new XmlDocument();
            doc.LoadXml(s);
            XmlElement node = doc.CreateElement("person");
            node.InnerText = "Nr.0";
            doc.DocumentElement.InsertBefore(node,doc.DocumentElement.FirstChild);
            doc.Save(Console.Out);
        }
    }
}

output:

<?xml version="1.0" encoding="IBM437"?>
<personer>
  <person>Nr.0</person>
  <person>Nr. 1</person>
</personer>
Avatar billede wired Nybegynder
10. juli 2006 - 01:04 #2
Det var pokkers.. Det virker ikke her..

Skriver lige det jeg har forinden:
  DataSet XMLDS = new DataSet();
  XMLDS.ReadXml(AppDomain.CurrentDomain.BaseDirectory + "personer.xml");
  XmlDocument XMLDoc = new XmlDataDocument(XMLDS);

og bagefter:
  XMLDS.WriteXml(AppDomain.CurrentDomain.BaseDirectory + "personer.xml");

Kan det være årsagen?

Tak for hurtig response.
Avatar billede wired Nybegynder
10. juli 2006 - 01:04 #3
Forøvrigt står der i min xml-fil:

<?xml version="1.0" standalone="yes"?>
<personer xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  ...
</personer>
Avatar billede wired Nybegynder
10. juli 2006 - 01:21 #4
Hmm... at jeg bruger et dataset syntes at være fejlen.

Jeg har rettet det til:

XMLDoc.Load(AppDomain.CurrentDomain.BaseDirectory + "personer.xml");

så virker det. Hmmm. øv at jeg ikke kan lave et dataset først.

Nåe.. men det her virker.. Takker også for det hurtige svar...

Send et svar og jeg giver dig points..
Avatar billede arne_v Ekspert
10. juli 2006 - 02:03 #5
et eller andet mystisk sker der

using System;
using System.Data;
using System.IO;
using System.Xml;

namespace E
{
    public class MainClass
    {
        public static void Main(string[] args)
        {
            string s = @"<personer>
  <person>Nr. 1</person>
</personer>";
            DataSet ds = new DataSet();
            ds.EnforceConstraints = false;
            ds.ReadXml(new StringReader(s));
            XmlDocument doc = new XmlDataDocument(ds);
            XmlElement node = doc.CreateElement("person");
            node.InnerText = "Nr.0";
            doc.DocumentElement.InsertBefore(node,doc.DocumentElement.FirstChild);
            doc.Save(Console.Out);
        }
    }
}

output:

<?xml version="1.0" encoding="IBM437"?>
<NewDataSet>
  <person>Nr.0</person>
  <personer>
    <person>Nr. 1</person>
  </personer>
</NewDataSet>
Avatar billede arne_v Ekspert
10. juli 2006 - 02:04 #6
nisserne driller vist lidt

og et svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester