Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Kopie von XmlNode in XmlDocument einfügen
Grimmbizkit
myCSharp.de - Member



Dabei seit:
Beiträge: 310
Herkunft: Niederrhein

Themenstarter:

Kopie von XmlNode in XmlDocument einfügen

beantworten | zitieren | melden

Abend zusammen,

gibt es eine Möglichkeit, das ich eine XmlNode als Object aus einem XmlDocument auslesen, dann Clone und wieder einfüge?

Folgende funktioniert bei mir nicht :-(


// Document erstellen/laden
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml("test.xml");

// Node per XPath lesen
XmlNode node = xmlDoc.SelectSingleNode(String.Format("/Configuration/HvsControl/ModulConfig/Modul[@Name='{0}'][@Instance='{1}']", modulName, instance));

// Node duplizieren
XmlNode newNode = node.Clone();

// Anpassen des Inhalt
newNode.Attributes["Name"].InnerText = modName;
newNode.Attributes["Instance"].InnerText = modInstance.ToString();
newNode.Attributes["Active"].InnerText = "False";
newNode["IP"].InnerText = "0.0.0.0";
newNode["Port"].InnerText = "1111";
newNode["Scanner_ID"].InnerText = "";
newNode["Scanner_Typ"].InnerText = "";

// Hier passiert der Fehler
xmlDoc.AppendChild(newNode);

Habt ihr evtl eine Ahnung wieso?

Grüße Simon
private Nachricht | Beiträge des Benutzers
chilic
myCSharp.de - Experte



Dabei seit:
Beiträge: 2126

beantworten | zitieren | melden

Man muss einen Node noch irgendwie - weiß ich grad nicht auswendig - dem XmlDocument zuordnen.
Zitat
Hier passiert der Fehler
Nachdem du nicht verrätst welcher Fehler das ist, weiß ich nicht ob es überhaupt tatsächlich daran liegt.
private Nachricht | Beiträge des Benutzers
LaTino
myCSharp.de - Experte

Avatar #avatar-4122.png


Dabei seit:
Beiträge: 3062
Herkunft: Thüringen

beantworten | zitieren | melden

Zitat von chilic
Man muss einen Node noch irgendwie - weiß ich grad nicht auswendig - dem XmlDocument zuordnen.

Genau. Indem man nicht new verwendet, sondern XmlDocument.CreateNode

LaTino.
"Furlow, is it always about money?"
"Is there anything else? I mean, how much sex can you have?"
"Don't know. I haven't maxed out yet."
(Furlow & Crichton, Farscape)
private Nachricht | Beiträge des Benutzers
Grimmbizkit
myCSharp.de - Member



Dabei seit:
Beiträge: 310
Herkunft: Niederrhein

Themenstarter:

beantworten | zitieren | melden

Morgen,

Der Fehler lautet:
"Das Dokument verfügt bereits über einen 'DocumentElemte'-Knoten"

Als kleiner Hinweis, so sieht in etwa die XML aus:

<Configuration>
    <SprachNr>0</SprachNr>
    <HvsControlHost prio="1">193.169.100.145</HvsControlHost>
    <Anmeldung_Delete>True</Anmeldung_Delete>
    <HvsControl>
        <ModulConfig>
            <Modul Active="False" Instance="1" Name="CardScan">
                <IP>10.24.5.199</IP>
                <Port>2112</Port>
                <Scanner_Typ>RFU630</Scanner_Typ>
		<Scanner_ID>1</Scanner_ID>
            </Modul>
        </ModulConfig>
    </HvsControl>
</Configuration>

Und der Bereich <Modul Active=......... soll kopiert/Dupliziert werden (aus Instance dann "2") und in die Xml Schreiben.
private Nachricht | Beiträge des Benutzers
LaTino
myCSharp.de - Experte

Avatar #avatar-4122.png


Dabei seit:
Beiträge: 3062
Herkunft: Thüringen

beantworten | zitieren | melden

Zitat von Grimmbizkit
Der Fehler lautet:
"Das Dokument verfügt bereits über einen 'DocumentElemte'-Knoten"

Oje. Gut, dass chilic nachgefragt hat. Du versuchst, defektes XML zu bauen. Häng den neuen Knoten dort ein, wo er hingehört, und versuch ihn nicht als Root-Knoten einzuhängen.

Konkret ist der Fehler hier:


xmlDoc.AppendChild(newNode);
//stattdessen:
node.ParentNode.AppendChild(newNode);

LaTino
"Furlow, is it always about money?"
"Is there anything else? I mean, how much sex can you have?"
"Don't know. I haven't maxed out yet."
(Furlow & Crichton, Farscape)
private Nachricht | Beiträge des Benutzers