Avatar billede henrik_bs Nybegynder
24. oktober 2003 - 16:04 Der er 8 kommentarer og
1 løsning

Fejl ifm XML

Hej

Jeg har nedenstående kode, men der er følgende fejl : Additional information: This document already has a DocumentElement node.

Dette giver kun problemer hvis jeg har flere XML dokumenter eller flere Quiz elementer i et XML dokument.
Er der nogen som har en ide til hvad problemet kan være ??

public static void QuizList(string folder, string xslDocument, TextWriter output)
        {
            string fileExtention = "*.XML";            
            string[] xmlfiler = Directory.GetFiles(folder,fileExtention);

            XmlDocument indoc = new XmlDocument();
            XmlDocument outdoc = new XmlDocument();
       
            foreach(string xmlfil in xmlfiler)
            {               
                indoc.Load(xmlfil);
                XmlNodeList nodelst = indoc.GetElementsByTagName("quiz");
                foreach(XmlNode node in nodelst)
                {
                    XmlElement newQuiz = outdoc.CreateElement(node.Name);                   
                   
                    XmlNamedNodeMap quizMap = node.Attributes;                   
                    foreach (XmlNode attribute in quizMap)
                    {
                        newQuiz.SetAttribute(attribute.Name, attribute.Value);                                               
                    }           
                outdoc.AppendChild(newQuiz);               
                }
            }
           
            outdoc.Save("C:\\Documents and Settings\\Henrik Sørensen\\My Documents\\Visual Studio Projects\\QuizLibrary\\quizList.xml");               

            XslTransform transForm = new XslTransform();
            transForm.Load(xslDocument);
            XPathNavigator navigator = ((IXPathNavigable)outdoc).CreateNavigator();
            transForm.Transform(navigator, null, output ,null);           
        }
Avatar billede odegaard Nybegynder
24. oktober 2003 - 16:07 #1
hvilken linje får du fejlen i ?
Avatar billede arne_v Ekspert
24. oktober 2003 - 16:09 #2
Prøv og flyt:

XmlDocument indoc = new XmlDocument();

inden i foreach(string xmlfil in xmlfiler) løkken !
Avatar billede henrik_bs Nybegynder
24. oktober 2003 - 16:10 #3
Jeg får fejlen i denne linie  :
XmlNodeList nodelst = indoc.GetElementsByTagName("quiz");
Avatar billede henrik_bs Nybegynder
24. oktober 2003 - 16:12 #4
har lige prøvet at flytte linien ind i foreach, men det giver samme resultat
Avatar billede jakobandersen Nybegynder
24. oktober 2003 - 16:35 #5
Og du er sikker på at der ikke er et af dine XML dokumenter der er invalide?
Avatar billede henrik_bs Nybegynder
25. oktober 2003 - 19:06 #6
mine xml dokumenter ser således ud :

  <?xml version="1.0" ?>
<quiz name="Quiz 1" description="Quizen om bla bla">
  <question name="Spm 1" question="Hvem er xxx?" feedback="qwerty">
      <answers answer="En lille dreng" select="true" />
      <answers answer="En lille pige" select="false" />
      <answers answer="En tegneseriefigur" select="true" />
  </question>
  <question name="Spm 2" question="Hvem er yyy?" feedback="ytrewq">
    <answers answer="En bunke hvidt pulver" select="false" />
    <answers answer="En tøjtiger" select="true" />
    <answers answer="Den finske statsminister" select="false" />
  </question>
</quiz>
Avatar billede arne_v Ekspert
25. oktober 2003 - 19:10 #7
Hvor får du root element i outdoc fra ?
Avatar billede henrik_bs Nybegynder
25. oktober 2003 - 19:42 #8
.det var det jeg maglede - et rod element i outdoc'en.
Gider du at lave et svar Arne v.
Avatar billede arne_v Ekspert
25. oktober 2003 - 20:19 #9
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