ERLEDIGT
JA
JA
ANTWORTEN
4
4
ZUGRIFFE
805
805
EMPFEHLEN
-
10.06.10 14:01 #1
- Registriert seit
- Jun 2010
- Beiträge
- 3
Hallo!
Ich habe folgendes Problem: Ich möchte eine XML Datei durchsuchen können, in der die Handlung von Filmen mit deren Titel als Attribut abgespeichert ist.
Hier meine XML Datei (wächst noch, muss erstmal generell an den Start kommen...):
Diese Datei habe ich mir mit C# schon angelegt, und Einträge hinzufügen klappt auch wunderbar, aber leider kann ich nicht nach Handlungen anhand eines Titels suchen.Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
<?xml version="1.0" encoding="utf-8"?> <Movies> <Movie Title="Der Untergang"> <Plot>Geschichtsfilm</Plot> </Movie> <Movie Title="Wasabi"> <Plot>Komödie</Plot> </Movie> <Movie Title="Testing"> <Plot>Here is a small test...</Plot> </Movie> <Movie Title="shakalak"> <Plot>lorem ipsum</Plot> </Movie> </Movies>
Habe schon gelesen, dass ich XPath brauchen werde, aber da bin ich nur bis
gekommen, was mir den ganzen Eintrag ausspuckt.Code :1
//Movie[@Title='Der Untergang']
Meine Frage also: Wie bekomme ich _nur_ die Handlung eines Filmes mit einem Titel als Suchoption aus der XML Datei?
Ich freue mich schon auf die Antworten, und sende meinen Dank im Voraus!
David
-
10.06.10 14:14 #2
- Registriert seit
- Jun 2005
- Beiträge
- 7.983
Hi.z.B.
Code :1
//Movie[@Title='Der Untergang']/Plot
Du könntest auch LINQ to XML verwenden um mit einer SQL ähnlichen Sprache in der XML Datei zu suchen und Elemente auszuwählen:
GrußCode csharp:1 2 3
var plots = from x in XDocument.Load(@"c:\path\datei.xml").Descendants("Movie") where x.Attribute("Title").Value == "Der Untergang" select x.Descendants("Plot").Value;
Geändert von deepthroat (10.06.10 um 14:52 Uhr)
If at first you don't succeed, try again. Then quit. No use being a damn fool about it.
-
10.06.10 14:28 #3
- Registriert seit
- Jun 2010
- Beiträge
- 3
danke für die schnelle Antwort, aber mir ist leider noch immer nicht wirklich geholfen.
Ich nutze folgenden Code:
XPath und XML sind selbstverständlich eingebunden. Aber: Meine Messagebox zeigt statt der Handlung nur folgendes:Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
XPathNavigator nav; XPathDocument docNav; XPathNodeIterator NodeIter; String strExpression; // Open the XML. docNav = new XPathDocument("..\\..\\XML\\plot.xml"); // Create a navigator to query with XPath. nav = docNav.CreateNavigator(); // Find the average cost of a book. // This expression uses standard XPath syntax. strExpression = "//Movie[@Title='Der Untergang']/Plot"; // Use the Evaluate method to return the evaluated expression. MessageBox.Show((nav.Evaluate(strExpression).ToString()));
MS.Internal.Xml.XPath.XPathSelectionIterator
So wie ich das verstehe muss ich jetzt wieder darauf eine Abfrage nach dem Eintrag "Plot" machen, aber wie?
Grüße,
David
PS: Deine zweite Methode schimpft wegen dem _x.Attribute("Title") == "Der Untergang"_ weil da zwei verschiedene Typen nicht aufeinander angewendet werden dürfen.Geändert von ReesClarkD (10.06.10 um 14:33 Uhr)
-
10.06.10 14:52 #4
- Registriert seit
- Jun 2005
- Beiträge
- 7.983
Die ToString() Methode ist bei soetwas nie richtig. Diese gibt nämlich immer nur den Typ des Objekts aus.
Verwende einfach die Value Property. Und schau einfach mal in die Doku bzw. suche nach Beispielen. Es gibt doch genügend im Netz. Z.B. http://www.codegod.de/WebAppCodeGod/...-C-AID504.aspx
Stimmt, da muss noch ein .Value hin. Werd ich gleich verbessern.
GrußIf at first you don't succeed, try again. Then quit. No use being a damn fool about it.
-
10.06.10 18:44 #5
- Registriert seit
- Jun 2010
- Beiträge
- 3
Danke, ich werde das gleich ausprobieren.
Ist aber nicht so, als dass ich nicht im Netz gesucht hätte. Allerdings hat jeder einen anderen Ansatz, und vor allem sind die XML Dateien aus den Beispielen meist anders aufgebaut.
Ich melde mich noch einmal, wenn es klappt. Und danke für den Link!
Gruß,
David
EDIT: Hat leider nicht funktioniert. Ich schaue weiter in dem von dir genannten Beispiel, aber über weitere Hilfe würde ich mich trotzdem freuen.
EDIT #2: So, dein Link hat mir mein Problem geklärt. Vielen Dank noch einmal. So, wo stelle ich das Topic nun auf "beantwortet" ?
Hier noch die für mich funktionierende Lösung:
Man muss jetzt halt mit den Strings basteln, damit die Suche variabel wird, aber das klappt schon. Dnake nochmal.Code :1 2 3 4 5 6 7 8
XPathDocument xPathDocMovies = new XPathDocument("..\\..\\XML\\plot.xml"); XPathNavigator xPathNavMovies = xPathDocMovies.CreateNavigator(); XPathNodeIterator xPathIterPlot = xPathNavMovies.Select("//Movie[@Title='shakalak']/Plot"); foreach (XPathNavigator nodeMovie in xPathIterPlot) { MessageBox.Show(nodeMovie.Value); }Geändert von ReesClarkD (10.06.10 um 19:42 Uhr)
Ähnliche Themen
-
Datei durchsuchen
Von Tualex im Forum PHPAntworten: 12Letzter Beitrag: 20.04.06, 08:11 -
Datei durchsuchen
Von Skala im Forum PHPAntworten: 2Letzter Beitrag: 01.06.05, 13:26 -
Datei durchsuchen
Von MadCrusher im Forum PHPAntworten: 3Letzter Beitrag: 24.04.05, 19:16 -
Bat-Datei mit Attributen aus Programm starten
Von Planet_Mars im Forum .NET ArchivAntworten: 2Letzter Beitrag: 07.02.05, 13:54 -
[C++] Datei durchsuchen
Von proBier im Forum C/C++Antworten: 10Letzter Beitrag: 22.07.03, 23:44





Zitieren

Login




