tutorials.de Buch-Aktion 05/2012
Seite 2 von 2 ErsteErste 12
ERLEDIGT
NEIN
ANTWORTEN
23
ZUGRIFFE
2164
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #16
    Avatar von Ein_Freund
    Ein_Freund Ein_Freund ist offline Mitglied Brokat
    Registriert seit
    Apr 2004
    Ort
    Essen
    Beiträge
    272
    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...

  2. #17
    lordfritte lordfritte ist offline Mitglied Brokat
    Registriert seit
    Mar 2006
    Beiträge
    256
    Zitat Zitat von niggo Beitrag anzeigen
    Auch mal die Beispiele aus Kapitel 10.3.3?
    Vielleicht auch mit einer Kombination aus beiden?!

    PS: Probier doch mal die Methode WriteElementString zwischen WriteStartElement und WriteEndElement
    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."
     

  3. #18
    Avatar von Nico Graichen
    Nico Graichen Nico Graichen ist offline aka gemballa
    tutorials.de Moderator
    Registriert seit
    Dec 2003
    Ort
    Pulheim (NRW)
    Beiträge
    3.898
    Blog-Einträge
    34
    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 Zitat von Mark Twain (1835-1910)
    Es gibt drei Dinge, die eine Frau aus dem Nichts hervorzaubern kann: einen Hut, einen Salat und einen Ehekrach.
    Zitat Zitat von Mike Wilson - Biographie über Larry Ellison (CEO Oracle)
    The Difference Between God and Larry Ellison: God Doesn't Think He's Larry Ellison

  4. #19
    lordfritte lordfritte ist offline Mitglied Brokat
    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.
     

  5. #20
    lordfritte lordfritte ist offline Mitglied Brokat
    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.
     

  6. #21
    Avatar von Norbert Eder
    Norbert Eder Norbert Eder ist offline Mitglied Diamant
    Registriert seit
    Feb 2004
    Ort
    Österreich / Graz
    Beiträge
    5.137
    Blog-Einträge
    51
    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);
     

  7. #22
    bugzz bugzz ist offline Grünschnabel
    Registriert seit
    Sep 2009
    Beiträge
    4
    Hallo, Ich bekomme folgende "fehler-meldung" deren grund ich aber nicht nachvollziehen kann.
    Token StartAttribute im Status Content würde in einem ungültigen XML-Dokument resultieren.
    Das passiert immer wenn ich versuche einen Sub-Element ein Attribut hizuzufühgen (siehe Quellcode und gewünschte XML output)


    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 ?
     

  8. #23
    Avatar von Nico Graichen
    Nico Graichen Nico Graichen ist offline aka gemballa
    tutorials.de Moderator
    Registriert seit
    Dec 2003
    Ort
    Pulheim (NRW)
    Beiträge
    3.898
    Blog-Einträge
    34
    Hi

    Probier mal erst
    WriteStartElement,
    dann die Attribute schreiben
    dann WriteEndElement
     
    Grüße Nico
    ----------------------
    Xing
    ----------------------
    Zitat Zitat von Mark Twain (1835-1910)
    Es gibt drei Dinge, die eine Frau aus dem Nichts hervorzaubern kann: einen Hut, einen Salat und einen Ehekrach.
    Zitat Zitat von Mike Wilson - Biographie über Larry Ellison (CEO Oracle)
    The Difference Between God and Larry Ellison: God Doesn't Think He's Larry Ellison

  9. #24
    bugzz bugzz ist offline Grünschnabel
    Registriert seit
    Sep 2009
    Beiträge
    4
    @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