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
[gelöst] XML Dateien MIT Kommentaren zusammenführen
andre67
myCSharp.de - Member

Avatar #avatar-3419.gif


Dabei seit:
Beiträge: 15
Herkunft: Berlin/München

Themenstarter:

[gelöst] XML Dateien MIT Kommentaren zusammenführen

beantworten | zitieren | melden

Hallo zusammen,

ich suche vergeblich nach einer Lösung, wie ich 2 XML-Dateien samt Kommentaren und eventuell auch Leerzeilen (die aber nicht ganz so wichtig sind) zusammenführen kann (.net 2.0).

Bisher mache ich es mit DataSets und die neue Datei ist ohne! Kommentare:


		DataSet ds = new DataSet();
		ds.ReadXml(xmlreader1);
		DataSet ds2 = new DataSet();
		ds2.ReadXml(xmlreader2);
		ds.Merge(ds2);

Kann mir bitte jemand einen Tipp geben? Die Suche nach einer Lösung erweist sich als schwierig, weil in jedem Forum das Wort "Kommentar", bzw. "comment" x-mal vorkommt X(

btw: In einem späteren Schritt muss ich aus einer der beiden Dateien eine dritte XML-Datei 'subtrahieren' (sorry, wenn ich mich da vielleicht den falschen Begriff gewählt habe).

Schöne Grüße
Andre

...oder bin ich vielleicht mit dem Dataset auf dem Holzweg, um XML-Dateien zusammenzuführen?
Dieser Beitrag wurde 5 mal editiert, zum letzten Mal von andre67 am .
private Nachricht | Beiträge des Benutzers
unconnected
myCSharp.de - Member

Avatar #avatar-3200.jpg


Dabei seit:
Beiträge: 862
Herkunft: Oerlinghausen/NRW

beantworten | zitieren | melden

Zumindest beim Lesen habe ich etwas gefunden:

Reading Xml Comments

Ja, und ich glaube Du bist mit dem Dataset auf dem Holzweg.
Ich denke Du must dich da mit XmlDocument etc rumschlagen :(
private Nachricht | Beiträge des Benutzers
serial
myCSharp.de - Member



Dabei seit:
Beiträge: 912

beantworten | zitieren | melden

Welche Kommentare meinst du?
Einfache XML Kommentare, oder XSD-Documentation-Kommentare?

mfg
serial
private Nachricht | Beiträge des Benutzers
andre67
myCSharp.de - Member

Avatar #avatar-3419.gif


Dabei seit:
Beiträge: 15
Herkunft: Berlin/München

Themenstarter:

beantworten | zitieren | melden

Hallo und vielen Dank für das Interesse, bzw. die angebotene Hilfe!

Ich habe eine XML-Konfigurationsdatei, die von später einem Programm eingelesen wird, mit folgendem Schema:

<?xml version="1.0" encoding="utf-8"?>
<!-- Kommentare sollen erhalten bleiben -->
<configuration>
  <startup useLegacyV2RuntimeActivationPolicy="true">
    <supportedRuntime version="..." sku="..." />
  </startup>
  <appSettings>
    <!-- Params -->
    <add key="..." value="..." />
    <!-- ... -->
    <add key="..." ... value... />
    <!-- ... -->
    <add key="..." ... value... />
    </appSettings>
<configuration>

Die erste Datei soll um folgende (add-Elemente) ergänzt werden, wenn ich in meiner Anwendung entsprechenden Button betätige:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
	<appSettings>	
		<!-- Kommentar der mit kopiert werden soll -->
		<add key="..." ... value... />
		<add key="..." ... value... />
                ...
	</appSettings>
</configuration>


Ich will es nun nicht mit einem Streamreader realisieren (OK, wenns nicht anders geht, dann ja), sondern mit System.XML, komme aber irgendwie nicht weiter.
Mit Kommentaren einlesen bekomme ich hin:


                XmlReaderSettings settings = new XmlReaderSettings();
                settings.IgnoreWhitespace = false;     // nicht so wichtig
                settings.IgnoreComments = false;

                XmlReader xmlreader1 = XmlReader.Create(@"C:\file1.config", settings);

                XmlReader xmlreader2 = XmlReader.Create(@"C:\file2.xml", settings);
...aber dann bekomme ich irgendwie beide nicht gemerged.

Hinzu kommt später eine dritte Datei mit gleichem Schema. Deren Inhaltselemente muss ich bei betätigen eines Buttons in der ersten Datei auf Vorhanden überprüfen, bei nichtvorhanden der ersten Datei hinzufügen und bei vorhanden überschreiben.

Schöne Grüße
Andre

PS:
Kann mir vielleicht jemand ein gutes Buch zu XML+C# empfehlen?
Dieser Beitrag wurde 3 mal editiert, zum letzten Mal von andre67 am .
private Nachricht | Beiträge des Benutzers
andre67
myCSharp.de - Member

Avatar #avatar-3419.gif


Dabei seit:
Beiträge: 15
Herkunft: Berlin/München

Themenstarter:

beantworten | zitieren | melden

Hallo zusammen,

ich habe es jetzt so gelöst:


            XmlReaderSettings settings = new XmlReaderSettings();
            settings.IgnoreWhitespace = false;
            settings.IgnoreComments = false;
            XmlReaderSettings settings2 = new XmlReaderSettings();
            settings2.IgnoreWhitespace = false;
            settings2.IgnoreComments = false;
            XmlReader xmlreaderOriginalCfg = XmlReader.Create(@"C:\...xml", settings);
            XmlReader xmlreaderVerificationCfg = XmlReader.Create(@"C:\....xml", settings);

            XmlDocument myData = new XmlDocument();
            myData.Load(xmlreaderOriginalCfg);
            XmlDocument myData2 = new XmlDocument();
            myData2.Load(xmlreaderVerificationCfg);

            XmlNode parentNode = myData.SelectSingleNode("/configuration/appSettings");

            foreach (XmlComment comment in myData2.SelectNodes("//comment()"))
            {
                XmlComment importedCom = myData.CreateComment(comment.Value);
                parentNode.AppendChild(importedCom);

                foreach (XmlNode node in myData2.DocumentElement.SelectNodes("/configuration/appSettings/add"))
                {
                    XmlNode imported = myData.ImportNode(node, true);
                    parentNode.AppendChild(imported);

                }
            }
            myData.Save(this.pathNew);

Ich markiere diesen Thread erst in 1-2 Tagen als gelöst, falls noch irgendwelche Einwände oder Verbesserungsvorschäge kommen^^

Auf jeden Fall vielen Dank an Euch!
Andrae
private Nachricht | Beiträge des Benutzers