ERLEDIGT
NEIN
NEIN
ANTWORTEN
23
23
ZUGRIFFE
2164
2164
EMPFEHLEN
-
12.04.07 21:07 #16
EDIT: niggo war schneller...
Geändert von Ein_Freund (12.04.07 um 21:15 Uhr)
Irren ist menschlich. Aber wer richtigen Mist bauen will, braucht einen Computer!
(unbekannt )
Bis irgendwann...
-
12.04.07 23:32 #17
- Registriert seit
- Mar 2006
- Beiträge
- 256
Du meinst also so?
Code :1 2 3
.WriteStartElement("backup") .WriteElementString("Test", "Wert") .WriteEndElement()
Das ergibt wieder nur sowas: <Test>Wert</Test>
Und wenn ich versuche dort ".WriteAttributeString()" unter das ".WriteElementString" zu setzen, gibt es einen Fehler: "Token StartAttribute im Status Content würde in einem ungültigen XML-Dokument resultieren."
-
ARGH
Code csharp:1 2 3 4 5 6
.... writer.WriteStartElement("foo"); writer.WriteAttributeString("bla", "schwall"); writer.WriteElementString("text"); writer.WriteEndElement(); ....
so schwer ist das doch nun wirklich nicht. Einfach mal die Beispiele aus den Links durchgehen und man sieht, was die einzelnen Funktionen machen
Grüße Nico
----------------------
Xing
----------------------
Zitat von Mark Twain (1835-1910)
Zitat von Mike Wilson - Biographie über Larry Ellison (CEO Oracle)
-
13.04.07 17:37 #19
- Registriert seit
- Mar 2006
- Beiträge
- 256
sorry so wie du das gemacht hast gibt das einen Fehler: "Fehler bei der Überladungsauflösung, da keine zugreifbare "WriteElementString" diese Anzahl von Argumenten akzeptiert." und wenn ich dem noch ein Argument geben kommt das raus:
Code :1 2 3
<foo bla="schwall"> <text /> </foo>
Und ich habe auch kein bock mehr, also es geht nicht.
-
03.06.07 20:59 #20
- Registriert seit
- Mar 2006
- Beiträge
- 256
hm ich habe eine Frage zum XMLReader, ich habe eine Datei:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
<backup> <settings> <OS>WinVista</OS> <username>Tobias</username> <backuppfad>G:\Backup</backuppfad> </settings> <backupjobs> <job> <title>Mozilla Firefox</title> <type>Software</type> <source> <WinXP></WinXP> <WinVista>C:\Users\{user}\AppData\Roaming\Mozilla\Firefox</WinVista> </source> <destination>Mozilla\Firefox</destination> </job> <job> <title>Mozilla Thunderbird</title> <type>Software</type> <source> <WinXP></WinXP> <WinVista>C:\Users\{user}\AppData\Roaming\Thunderbird</WinVista> </source> <destination>Mozilla\Thunderbird</destination> </job> <job> <title>Mozilla Sunbird</title> <type>Software</type> <source> <WinXP></WinXP> <WinVista>C:\Users\{user}\AppData\Roaming\Mozilla\Sunbird</WinVista> </source> <destination>Mozilla\Sunbird</destination> </job> </backupjobs> </backup>
und ich möchte gezielt backup->settings->username auslesen.
-
Nimm doch die Klasse XmlDocument.
Code csharp:1 2 3 4 5 6
XmlDocument doc = new XmlDocument(); doc.Load("myxml.xml"); XmlNode xn = doc.SelectSingleNode("/backup/settings/username"); if (xn != null) Console.WriteLine(xn.InnerText);
-
Hallo, Ich bekomme folgende "fehler-meldung" deren grund ich aber nicht nachvollziehen kann.
Das passiert immer wenn ich versuche einen Sub-Element ein Attribut hizuzufühgen (siehe Quellcode und gewünschte XML output)Token StartAttribute im Status Content würde in einem ungültigen XML-Dokument resultieren.
Code vb.net:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load Dim xmlFileName As String = "J:\eBooks\report_" & DateAndTime.Now.ToShortDateString & ".xml" 'XML-Dateiname -> report_27.06.2011.xml Dim xw As New XmlTextWriter(xmlFileName, System.Text.Encoding.UTF8) xw.Formatting = Formatting.Indented Dim alle_dateien() As String, datei_typen() = {"*.pdf"} 'Dateitypen nach die gesucht werden soll Dim datei_type As String, datei As String ' ' schleife durch alle Dateitypen ' For Each datei_type In datei_typen Try 'Lese alle Dateien aus dem Ordner... alle_dateien = Directory.GetFiles("J:\eBooks\", datei_type, SearchOption.AllDirectories) xw.WriteStartDocument() 'Erstelle ROOT element für XML xw.WriteStartElement("ebooks") 'Attribut COUNT für den ROOT-ELEMENT xw.WriteAttributeString("count", alle_dateien.Count.ToString) ' ' Schleife durch alle_dateien Array ' For Each datei In alle_dateien lst_ebooks.Items.Add(datei) Dim dateInfo As New FileInfo(datei) 'Datei-Informationen... With xw '<ebook>... .WriteStartElement("ebook") 'Attribut für den <ebook> Element... .WriteAttributeString("absolute_path", dateInfo.FullName.ToString) 'Erstelle einen Sub-Element <file>.... .WriteElementString("file", dateInfo.Name.ToString) 'sub-Element <size> .WriteElementString("size", XmlConvert.ToString(System.Math.Round(dateInfo.Length / 1024, 2))) 'Attribut BYTES für sub-element <size>.... .WriteAttributeString("bytes", dateInfo.Length.ToString) '<- FEHLER! WARUM ?! .WriteElementString("created", dateInfo.CreationTime.ToShortDateString) 'xw.WriteAttributeString("datetime", dateInfo.CreationTime) <- AUCH FEHLER! .WriteElementString("location", dateInfo.DirectoryName) .WriteEndElement() '...</ebook> End With Next 'Schliesen den ROOT-Element xw.WriteEndElement() xw.Close() Catch ex As Exception MsgBox("Error : " & ex.Data.ToString & vbNewLine & "Message : " & ex.Message) End Try Next End Sub
Mein wunsch ist folgende XML Datei zu erstellen :
Code xml:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
<?xml version="1.0" encoding="utf-8"?> <ebooks count="494"> ..... <ebook absolute_path="J:\eBooks\Apress - Pro ASP.NET 4 in VB 2010, Third Edition.Sep.2010.ENG.pdf"> <file>Apress - Pro ASP.NET 4 in VB 2010, Third Edition.Sep.2010.ENG.pdf</file> <size bytes="40176052">40Mb</size> <created datetime="25.12.2010 12:48:52">25.12.2010</created> <location>J:\eBooks</location> </ebook> <ebook absolute_path="J:\eBooks\Apress - Pro PHP and jQuery.Jun.2010.pdf"> <file>Apress - Pro PHP and jQuery.Jun.2010.pdf</file> <size bytes="12523132">12.5Mb</size> <created datetime="10.07.2010 19:43:10">10.07.2010</created> <location>J:\eBooks</location> </ebook> ..... </ebooks>
Fehler tritt imemr auf, wenn ich versuche den Elementen <size> und <created> einen Attribut zuzuweisen. Ich vermute, das wird mit jeden sub-element der <ebook> passieren. Versteh' aber nicht warum..und weiß nicht wie an meinen wunsch-output komme... Ideen ?
-
Hi
Probier mal erst
WriteStartElement,
dann die Attribute schreiben
dann WriteEndElementGrüße Nico
----------------------
Xing
----------------------
Zitat von Mark Twain (1835-1910)
Zitat von Mike Wilson - Biographie über Larry Ellison (CEO Oracle)
-
@Nico
Danke. Zwar habe ich die Antwort schon von paar tagen gefunden, aber trozdem Danke.
Ich habe volgende Code verwendet:
Code vb.net:1 2 3 4
.WriteStartElement("size") .WriteAttributeString("bytes", dateiInfo.Length.ToString) .WriteString(Math.Round(dateiInfo.Length / 1048576, 2) & "Mb") .WriteEndElement()
UPDATE:
das selbe Ergebniss mit Linq To XML....
Code vb.net:1 2 3 4 5 6 7 8 9 10 11
Dim dir As DirectoryInfo = New DirectoryInfo("j:/ebooks/") Dim doc As XDocument = New XDocument( New XElement("ebooks", New XAttribute("count", dir.EnumerateFiles("*.pdf", SearchOption.AllDirectories).Count), From book In dir.GetFiles("*.pdf", SearchOption.AllDirectories) Order By book.LastAccessTime Descending Select New XElement("ebook", New XAttribute("absolute_path", book.FullName), New XElement("file", book.Name), New XElement("size", New XAttribute("bytes", book.Length), Math.Round(book.Length / 1048576, 2) & " Mb"), New XElement("mtime", book.LastAccessTime.ToShortDateString), New XElement("localtion", book.Directory)))) doc.Save("xml_dump.xml")
Geändert von bugzz (14.07.11 um 13:13 Uhr) Grund: UPDATE





Zitieren

Login





