1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

C#: Bestimmten Teil aus einer XML-Datei auslesen

Dieses Thema im Forum ".NET Datenverwaltung" wurde erstellt von fency, 18. Juni 2015.

  1. fency

    fency Grünschnabel

    Hi Leute,

    Ich bin leider totaler XML-Anfänger. Daher brauche ich eure Hilfe.
    Ich habe eine XML aus der ich einen bestimmten Abschnitt auslesen möchte, diesen kann/möchte ich nur an Hand eines Parameters bestimmen, falls das so möglich ist.

    Im konkreten Fall würde es um den Parameter P11012="30" gehen.
    Wie kann ich an Hand dieser Auswahl, den ganzen Bereich der unter <04 Build .... fällt einlesen?

    [​IMG]

    Ich wäre für alle Tips oder Beispiele sehr dankbar.

    mfg

    fency
     
  2. Cromon

    Cromon Premium-User

    Hallo fency

    Wie wärs mit einem XPath Ausdruck? Könnte mir zum Beispiel sowas vorstellen:
    Code (Text):
    1. EplanPxfRoot/*[starts-with(name(), 'O') and *[starts-with(name(), 'P') and @P11012='30']]
    Getroffene Annahmen:
    Der gewünschte Node liegt gleich unter EplanPxfRoot, kann O<irgendwas> sein (also O4, O1124124, Oasdfaswerasdf, oder nur O), der Node mit dem Attribut P11012 mit dem Wert 30 liegt gleich unterhalb des O* Nodes und beginnt mit P. Kannst die Sachen ja nach Bedarf noch abändern.

    Das ganze mit:
    XPathDocument
    XPathNavigator

    Viele Grüsse
    Cromon
     
  3. marcelbmg

    marcelbmg Grünschnabel

    Hallo Zusammen,

    Hätte zu diesem thema auch ein Problem,´.

    Bin neu in der XML Branche. Ich bin an einem Programm wo ich eine bestimmte Stelle in der XML auslesen möchte und einen bestimmten Wert verändern will. Dies soll das aus einer Textbox ausgelesen werden und direkt ersetzt werden.
    Bin bis jetzt soweit gekommen.
    Kann mir da jemand helfen ?

    Mein code sieht folgendermaßen aus.:
    Code (C#):
    1. private async void btn4_Start_Click_2(object sender, RoutedEventArgs e)
    2.         {
    3.             XmlDocument doc = new XmlDocument();
    4.             doc.Load("K:\\MAM\\DevExpress\\cs proj datei.v16.2.xml");
    5.  
    6.             Console.WriteLine("Nodes");
    7.             foreach (XmlNode node in doc.DocumentElement.ChildNodes)
    8.             {
    9.                 string text = node.Name; //or loop through its children as well
    10.                 Console.WriteLine("ItemGroup:" + text);
    11.                 foreach (XmlNode unterknoten in node)
    12.                 {
    13.                     string text1 = unterknoten.Name; //or loop through its children as well
    14.                     Console.WriteLine("Refernence:" + text1);
    15.  
    16.  
    17.                     XmlNode Reference = doc.SelectSingleNode("/ProbertyGroup/ItemGroup[@Title='include']");
    18.                     if (Reference != null)
    19.                         Reference.Attributes["include"].InnerText = ".v15.1";
    20.                     doc.Save("K:\\Test100.xml");                  
    21.             }
    Die XML sieht so aus.:
    Code (XML):
    1. <?xml version="1.0" encoding="UTF-8"?>
    2.  
    3. -<Project xmlns="[URL]http://schemas.microsoft.com/developer/msbuild/2003[/URL]" DefaultTargets="Build" ToolsVersion="12.0">
    4. <Import Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props"/>
    5. +<PropertyGroup>
    6. +<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
    7. +<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
    8. +<PropertyGroup>
    9. +<PropertyGroup>
    10. -<ItemGroup>
    11. -<Reference Include="DevExpress.Charts.[B]v15.1[/B].Core, Version=[B]15.1.3.0[/B], Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL">
    12. <SpecificVersion>False</SpecificVersion>
    13. <HintPath>..\Assemblies\DevExpress.Charts.[B]v15.1[/B].Core.dll</HintPath>
    Die Fettmakierten sollen geändert werden und vorher aus einer Textbox ausgelesen werden was dann automatisch in der XML ersetzt wird.



    Vielen Dank für eure Hilfe!
     
    Zuletzt von einem Moderator bearbeitet: 24. Mai 2016
  4. marcelbmg

    marcelbmg Grünschnabel

    Keiner da? der mir helfen kann?
     
  5. Spyke

    Spyke Capoeirista Premium-User

    Schau dir mal XSL an.
    Denke mir darüber wäre die sauberste Lösung
    (hab aber selbst auch noch nicht so viel mit gemacht)
     
Die Seite wird geladen...