4Danke
ERLEDIGT
JA
JA
ANTWORTEN
13
13
ZUGRIFFE
695
695
EMPFEHLEN
-
Guten Tag liebe Leute,
Heute bin ich mal mit C# unterwegs und mir fehlen mal komplette ansätze...
Ich habe eine XML-Datei die Hunderter, Zehner und Einer Definieren soll.
Das HunderterElement beinhaltet das Attribut 'Wert' und das Element Zehner, was wiederrum auch ein Attribut 'Wert' enthält, so wie das das Element Einer, was AUCH wiederrum das Attribut 'Wert' enthält.
Folgender Code:
Code xml:1 2 3 4 5 6 7 8 9 10 11 12
<?xml version="1.0" encoding="UTF-8"?> <Layer> <Hunderter> <Zehner> <Einer> <Wert>2</Wert> </Einer> <Wert>5</Wert> </Zehner> <Wert>6</Wert> </Hunderter> </Layer>
Jetzt will ich in meiner Console ausgeben, das der Hunderter den Wert X besitzt, der Zehner seinen Wert und der Einer Seinen Wert.
Bisher habe ich das mit dem XmlReader versucht um das erste Element ausfindig zu machen (Hunderter). Wenn dies geschehen ist soll er den in 'Hunderter' stehenden 'Wert' an eine Stringvariable zurückgeben.
Wenn ich jetzt aber Folgendes mache:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
XmlReader reader; reader.Create("C:/test.xml"); string[] Werte = {"Hunderter", "Zehner", "Einer"} int index = 0; while(index-1 != Werte.Length) { while(reader.Read()) { if(string.Compare(reader.Name.ToString(), Werte[i])) { reader.ReadNextElement("Wert"); Console.WriteLine(reader.ReadString()); } } index = index +1; }
Bekommt er ja nicht den Wert von dem Hunderter sondern den ersten Wert den er findet und das ist ja der Einer.
Jetzt wurde mir vorgeschlagen das ich doch XmlDocument nutzen kann aber damit kenne ich mich in keinster weise aus... ich hab mir das mal angesehen aber irgentwie stehe ich da komplett auf dem schlauch...
erbitte dringent Hilfe danke Vielmals
PS: Ich arbeite Mit Visual Studio 2005
-
30.07.10 16:08 #2
- Registriert seit
- Jul 2004
- Ort
- Deutschland
- Beiträge
- 95
Hallo Henig,
ich bin mir jetzt nicht sicher ob im VS2005 das unterstützt wird, aber der folgende Code sollte dir schonmal weiter helfen.
Code csharp:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
static void Main(string[] args) { XmlTextReader reader = new XmlTextReader("test.xml"); var xmlContent = XElement.Load(reader); var xmlSectionH = xmlContent.Element("Hunderter"); var xmlKeyH = xmlSectionH.Element("Wert"); string valueH = xmlKeyH.Value; Console.WriteLine("Hunderter wert: " + valueH); var xmlSectionZ = xmlSectionH.Element("Zehner"); var xmlKeyZ = xmlSectionZ.Element("Wert"); string valueZ = xmlKeyZ.Value; Console.WriteLine("Zehner wert: " + valueZ); var xmlSectionE = xmlSectionZ.Element("Einer"); var xmlKeyE = xmlSectionE.Element("Wert"); string valueE = xmlKeyE.Value; Console.WriteLine("Einer wert: " + valueE); Console.ReadLine(); }
Gruß
-
okay, soweit sogut verständlicher code danke aufjedenfall schonmal dafür =)
aber ich bekomme bei den "var"s die Fehlermeldung:
muss ich noch irgentwas hinzufügen, damit das var für den compiler verständlich ist?Fehler 1 Der Typ- oder Namespacename "var" konnte nicht gefunden werden. (Fehlt eine using-Direktive oder ein Assemblyverweis?) C:\Dokumente und Einstellungen\esn.lua\Eigene Dateien\Visual Studio 2005\Projects\XmlDocument Test\XmlDocument Test\Program.cs 14 13 XmlDocument Test
-
02.08.10 13:33 #4
- Registriert seit
- Jul 2004
- Ort
- Deutschland
- Beiträge
- 95
Hallo,
der Datentyp var ist erst in .NET 3.5 verwendbar. Also erst ab VS2008. Aber wenn du anstatt var direkt das XElement nimmst sollte es auch gehen.
Gruß
-
Danke dir dafür =)
Ich habe jetzt noch einen zweiten weg gefunden, den ich über XmlDocument gelöst habe:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14
XmlDocument doc = new XmlDocument(); doc.Load(test.txt); System.Xml.XmlNode node; System.Xml.XmlElement root = doc.DocumentElement; node = root.SelectSingleNode("//Hunderter/Wert"); Console.WriteLine(node.InnerXml); node = root.SelectSingleNode("//Zehner/Wert"); Console.WriteLine(node.InnerXml); node = root.SelectSingleNode("//Einer/Wert"); Console.WriteLine(node.InnerXml);
Ich freu mich grade totel das ich den mist endlich zusammengewurstelt bekommen habe danke euch, die sich mein Problem wenigstens angesehen haben
-
Neues Problem aber gleiches Thema....
Ich arbeite grade an ner neuen XML-Datei, für die ich mich jetzt in die XmlDocument-Klasse eingelesen habe...
Ich habe in den Hunderter Zehner und Einer elementen jeweils ein ID-Attribut.
Code xml:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
<Layer> <Hunderter ID = 1> <Zehner ID = 2> <Einer ID = 3> <WertElement> <Wert>2</Wert> </WertElement> </Einer> <WertElement> <Wert>2</Wert> </WertElement> </Zehner> <WertElement> <Wert>2</Wert> </WertElement> </Hunderter> </Layer>
Wie komme ich jetzt mithilfe von XmlDocument z.B. auf den Inhalt von (In XPath ausgedrückt: "/Layer/Hunderter/WertElement/Wert", ohne XPath selber zu nutzen und mithilfe der ID also SQL-Mäßig: " WHERE ID = 1"! Das Programmd as ich schreibe will ich variabel haben udn evtl noch teusender etc hinzufügen
Vielen dankfür eure Hilfe und Grüße
-
08.08.10 17:32 #7
- Registriert seit
- Jun 2005
- Beiträge
- 7.983
If at first you don't succeed, try again. Then quit. No use being a damn fool about it.
-
weil ich mithilfe von XPath nur die nodes herausfinden kann und nicht die elemente an sich... Ich habe eine funktion an die ich ein Element übergeben muss und weiß auch nicht ob/wie ich ein XmlNode zu einem XmlElement umwandeln kann.
Nicht Hening nicht Henning nein Henig... wie Honig... nur mit E ;)
-
09.08.10 09:28 #9
- Registriert seit
- Jun 2005
- Beiträge
- 7.983
If at first you don't succeed, try again. Then quit. No use being a damn fool about it.
-
Vielen dank für die info das bringt mich schonmal ein stück weiter meine funktion allerdings mag es nicht, dass ich aus einem XmlNode-Array eine instanz zu einem XmlElement caste...
Code csharp:1 2
SignedXml sx = null; sx.LoadXml((XmlElement)nodeArray[0]);
Edit: nodeArray ist natürlich ein XmlNode[]Unbekannte Transformation gefunden.Geändert von Henig (09.08.10 um 11:33 Uhr)
Nicht Hening nicht Henning nein Henig... wie Honig... nur mit E ;)
-
09.08.10 11:51 #11
- Registriert seit
- Jun 2005
- Beiträge
- 7.983
If at first you don't succeed, try again. Then quit. No use being a damn fool about it.
-
Das ganze ist in einer komplexen Funktion verschachteltCode csharp:
1 2 3 4 5 6 7 8 9
try { sx.LoadXml((XmlElement)nodeArray[0]); } catch (Exception exception1) // Hier wird der Fehler beim Debugegn angezeigt entsteht also in Z.3 { bool flag = false; return flag; }
Ich habe jetzt nur keine Ahnung, wieso das so nicht funktioniert (Blättere grade in der doku herum finde aber nichts)):.Nicht Hening nicht Henning nein Henig... wie Honig... nur mit E ;)
-
09.08.10 13:08 #13
- Registriert seit
- Jun 2005
- Beiträge
- 7.983
Hi.
Wenn es sich um eine Exception handelt, dann kopiere die Details der Exception in die Zwischenablage und füge es hier ein.
Laut Doku (http://msdn.microsoft.com/en-us/libr...l.loadxml.aspx) wirft die LoadXml Methode Exceptions aus diesen Gründen:
Du hast also ein falsches Element an die Methode übergeben.Code :1 2 3 4 5
The value parameter does not contain a valid SignatureValue property. -or- The value parameter does not contain a valid SignedInfo property.
GrußIf at first you don't succeed, try again. Then quit. No use being a damn fool about it.
-
Ok das tut mir jetzt voll leid und ist mir auch total peinlich aber du hast recht... ich hab das Signature-Element nicht mehr angegeben, weil ich davon ausgegangen bin, dass meine Funktion sich die Sugnatur aus dem übergeordnetem Element selber holt... dabei hab ich dann ein null übergeben und das findet der nicht so toll
danke dir =)
//Edit: Doch nicht! Der richtige Pfad wurde angegeben das Problem ist, dass ich den alten Microsoft-Entschlüsseöungsstandart benutzt habe und damit einen neueren entschlüsseln wollte. Deshalb ist auch die Transformation Fehlerhaft...Geändert von Henig (10.08.10 um 10:29 Uhr)
Nicht Hening nicht Henning nein Henig... wie Honig... nur mit E ;)
Ähnliche Themen
-
mehrere werte aus datei einlesen und in einzelnen variablen speichern?
Von Sidahan im Forum JavaAntworten: 2Letzter Beitrag: 20.11.10, 21:09 -
Problem: Werte aus Datei in Map einlesen?
Von LadyMarion im Forum C/C++Antworten: 0Letzter Beitrag: 12.08.08, 10:36 -
Werte aus einer Datei einlesen...
Von Paule123x im Forum C/C++Antworten: 5Letzter Beitrag: 02.07.08, 12:28 -
Problem beim Datei einlesen und Werte zurückgeben
Von LadyMarion im Forum C/C++Antworten: 7Letzter Beitrag: 22.01.08, 20:06 -
Hex-werte aus Datei in Integer einlesen
Von genfrosch im Forum JavaAntworten: 2Letzter Beitrag: 08.07.05, 15:14





Zitieren

Login




