Register for your free account! | Forgot your password?

You last visited: Today at 19:43

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



[TuT] VB Xml-Datei

Discussion on [TuT] VB Xml-Datei within the Coding Tutorials forum part of the General Coding category.

Reply
 
Old   #1
 
P-a-i-n's Avatar
 
elite*gold: 0
Join Date: Nov 2009
Posts: 1,258
Received Thanks: 396
[TuT] VB Xml-Datei

so walter da haste deine XML datei
es ist normale XML
keine XML linq

erklärung steht in source ich hab mir auch hier was einfallen lassen um das laden zu kürzen

wichtig ist das ihr immer elemente schließt wenn ihr eins erstellt sonst wird das alles nebeneinander geschrieben
in der XML selber die die knotennamen keine leerzeichen reinschreiben

so der source


Code:
Imports System.Xml

Public Class Form1

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        'erstellen der xml wo sie gespeichert wird
        Dim XML As New XmlTextWriter("Test.xml", New System.Text.UnicodeEncoding)


        XML.Formatting = Formatting.Indented ' format einstellen
        XML.Indentation = 5 'der einrücker

        XML.WriteStartElement("Anwedungxxx") ' der xml stamm


        XML.WriteStartElement("login") ' klassenkopf



        'hier erstellen wir ein element
        XML.WriteStartElement("Username")
        XML.WriteValue(TextBox1.Text) 'hier wird der text aus tb2 später gespeichert in die xml
        XML.WriteEndElement() 'das element schließen


        'hier erstellen wir ein element
        XML.WriteStartElement("Passwort")
        XML.WriteValue(TextBox2.Text)
        XML.WriteEndElement() 'das element schließen 
        XML.WriteEndElement() ' hier wird login geschlossen
        ' das könnte man sich vorstellen wie bei c++ mit den geschweifeten klammern
        ' man macht was auf und muss es wieder zumachen



        ' hier nochmal das selbe wie oben 
        XML.WriteStartElement("Einstellungen") 'klassenkopf


        'hier erstellen wir ein element
        XML.WriteStartElement("SpeicherpfadMusik")
        XML.WriteValue(TextBox3.Text)
        XML.WriteEndElement() 'das element schließen 


        'hier erstellen wir ein element
        XML.WriteStartElement("SpeicherpfadBilder")
        XML.WriteValue(TextBox4.Text)
        XML.WriteEndElement()

        XML.WriteEndElement()

        XML.WriteEndElement() ' hier wird der stamm anwedungxxx geschlossen
        XML.Close() ' das xml dokument schließen und später 


    End Sub

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

        Dim XML As New XmlDocument ' nur eine kürzung
        XML.Load("Test.xml") ' die xml laden

        ' die liste erstellen in den die nodes aus dem hauptnamen kopieren 
        Dim Meinlogin As XmlNodeList = XML.GetElementsByTagName("login")

        'und nu geben wir sie an unsere tb's, lb's oder sonst wohin
        For Each login As XmlNode In Meinlogin
            TextBox1.Text = login.ChildNodes(0).ChildNodes(0).Value
            TextBox2.Text = login.ChildNodes(1).ChildNodes(0).Value ' das childnode um 1 erhöhen sonst gibts ein fehler
            ' als nächstes würde hier 3 kommen als childnode u.s.w
        Next

        ' das selbe wie oben 
        Dim MeineEinstellungen As XmlNodeList = XML.GetElementsByTagName("Einstellungen")

        For Each Einstellungen As XmlNode In MeineEinstellungen
           
            TextBox3.Text = Einstellungen.ChildNodes(0).ChildNodes(0).Value
            TextBox4.Text = Einstellungen.ChildNodes(1).ChildNodes(0).Value

        Next
    End Sub

End Class

wenn ihr es nachbauen wollt sehr ihr ja 2 buttons und 4 textboxen

und so sieht das ganze aus

Code:
<Anwedungxxx>
     <login>
          <Username>Pain</Username>
          <Passwort>1234</Passwort>
     </login>
     <Einstellungen>
          <SpeicherpfadMusik>C:\Users\Pain\Music</SpeicherpfadMusik>
          <SpeicherpfadBilder>C:\Users\Pain\Bilder</SpeicherpfadBilder>
     </Einstellungen>
</Anwedungxxx>
ich hätte ja mehr gemacht aber ich wollte den source klein halten ihr könnt das euch in eure eigenen subs packen oder wie ihr wollt
P-a-i-n is offline  
Thanks
2 Users
Old 06/08/2010, 21:00   #2
 
elite*gold: 0
Join Date: May 2010
Posts: 793
Received Thanks: 268
sehr zu empfehlen ist meiner Meining nach auch die System.Xml.Serialization namespace klassen. mittlweweile speichere ich daten in meinem Programmen ausschliesslich damit, hier ein beispiel aus einem meoner programme (in c#).
es vereint die übersichtlichkeit von XML Dateien mit der Einfachheit von Serialization

c#-code:
PHP Code:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;
using System.Xml.Serialization;
using System.IO;

namespace 
BotServer
{
    [
XmlRoot("Function")]
    public class 
FunctionInfo
    
{
        public 
Int32 Paramsanzahl;
        public 
String Name;
        public 
String ShowName;
        public 
String ModuleName;
        public 
string GetModuleName
        
{
            
get { return ModuleName; }
        }
        public 
string GetShowName
        
{
            
get { return ShowName; }
        }
        [
XmlIgnore]
        public static List<
FunctionInfoinfos;

        static 
FunctionInfo() 
        {
            
infos Load("functions.xml");
        }
        public static 
void Save(String fileName, List<FunctionInfofunctions)
        {
            
XmlSerializer ser = new XmlSerializer(typeof(List<FunctionInfo>));
            
FileStream fstr File.Open(fileNameFileMode.Create);
            
ser.Serialize(fstrfunctions);
        }
        public static List<
FunctionInfoLoad(String fileName)
        {
            
XmlSerializer ser = new XmlSerializer(typeof(List<FunctionInfo>));
            
FileStream fstr File.Open(fileNameFileMode.OpenOrCreate);
            List<
FunctionInforet = (List<FunctionInfo>)ser.Deserialize(fstr);
            
fstr.Close();
            return (
ret);
        }
    }


eine möglcih ausgabe bzw. Eingabe
Code:
<?xml version="1.0"?>
<ArrayOfFunctionInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <FunctionInfo>
    <Paramsanzahl>0</Paramsanzahl>
    <Name>?SendData@Library@@QAEXXZ</Name>
    <ModuleName>Network</ModuleName>
    <ShowName>SendData</ShowName>
  </FunctionInfo>
  <FunctionInfo>
    <Paramsanzahl>3</Paramsanzahl>
    <Name>?GoToZone@Library@@QAEXHHH@Z</Name>
    <ModuleName>Network</ModuleName>
    <ShowName>GoZone</ShowName>
  </FunctionInfo>
  <FunctionInfo>
    <Paramsanzahl>0</Paramsanzahl>
    <Name>?DeleteEveryMob@Library@@QAEXXZ</Name>
    <ModuleName>Network</ModuleName>
    <ShowName>KillMobs</ShowName>
  </FunctionInfo>
</ArrayOfFunctionInfo>
nkkk is offline  
Old 06/08/2010, 21:23   #3
 
elite*gold: 55
Join Date: Oct 2009
Posts: 288
Received Thanks: 82
Von C# versteh ich nichts den bezug auch nicht^^
nag is offline  
Old 06/08/2010, 23:50   #4
 
elite*gold: 0
Join Date: May 2010
Posts: 793
Received Thanks: 268
Quote:
Originally Posted by nag View Post
Von C# versteh ich nichts den bezug auch nicht^^
naja c# ud VB benutzen das .NET framework, also haben die selben klassen. Folglich kannst du fast jeden Code von c# in .NET ziemlich einfach umschreiben.
nkkk is offline  
Old 06/09/2010, 00:59   #5
 
P-a-i-n's Avatar
 
elite*gold: 0
Join Date: Nov 2009
Posts: 1,258
Received Thanks: 396
wie gesagt im vordergrund besteht das bearbeiten der pfade ein vorgefertigte xml ist nichts für mich weil man seine GDI eingeschaften anpassen will z.B der farbverlauf im hintergrund der anwedung etc

die gegenfrage izu dir nkkk ist
was machst du wenn der benutzer deine XML nicht auf dem pc hat ?
deins ist nicht falsch aber ich hab es so beschrieben das ein anweder auch ohne XML sie ganz leicht erstellen kann
z.B im form_load laden und im form_close speichern lassen darauf bin ich hinausgelaufen

daher gebe ich gleich alles so an das es passt und zum bearbeiten da ist

aber ich bevorzuge selber lieber die gute alte ini
P-a-i-n is offline  
Old 06/09/2010, 03:06   #6
 
elite*gold: 0
Join Date: Sep 2009
Posts: 140
Received Thanks: 408
Thank you, but could you make it a bit less tied?
s0n1k is offline  
Thanks
1 User
Old 06/09/2010, 15:46   #7
 
elite*gold: 0
Join Date: May 2010
Posts: 793
Received Thanks: 268
Arrow

Quote:
Originally Posted by P-a-i-n View Post
wie gesagt im vordergrund besteht das bearbeiten der pfade ein vorgefertigte xml ist nichts für mich weil man seine GDI eingeschaften anpassen will z.B der farbverlauf im hintergrund der anwedung etc

die gegenfrage izu dir nkkk ist
was machst du wenn der benutzer deine XML nicht auf dem pc hat ?
deins ist nicht falsch aber ich hab es so beschrieben das ein anweder auch ohne XML sie ganz leicht erstellen kann
naja man liefert sie mit, und der User kann sie verändern. Wennman will kannmna ja uch deafult werte einbauen;
PHP Code:

using System
;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;
using System.Xml.Serialization;
using System.IO;

namespace 
BotServer
{
    [
XmlRoot("Params")]
    public class 
Params
    
{
        public 
String SpeicherpfadMusik "C:\Users\Pain\Music";//Beispiel wie man deafzlt werte macht
        
public String SpeicherpfadBilder;
        public 
String Username;
        public 
String Passwort;

        public static 
void Save(String fileNameParams params)
        {
            
XmlSerializer ser = new XmlSerializer(typeof(Params));
            
FileStream fstr File.Open(fileNameFileMode.Create);
            
ser.Serialize(fstrfunctions);
        }
        public static 
Params Load(String fileName)
        {
            
XmlSerializer ser = new XmlSerializer(typeof(Params));
            
FileStream fstr File.Open(fileNameFileMode.OpenOrCreate);
            
Params  ret = (Params)ser.Deserialize(fstr);
            
fstr.Close();
            return (
ret);
        }
    }

hier wie man von forms aus den code benutzen kann:
PHP Code:


        
private void Form1_Load(object senderEventArgs e)
        {
           try{
//falls die datei nicht Exiistiert
               
Params p Params.Load("params.xml"); 
               
this.texboxSpeicherpfadMusik.Text p.SpeicherpfadMusik;
               
this.texboxSpeicherpfadBilder.Text p.SpeicherpfadBilder;
               
this.texboxUsername.Tex p.Username;
               
this.texboxPasswort.Text p.Passwort;
          }catch(
exception e)
          {
                 
//hier könnt man z.B. deafult werte setzen
           
}
        }

        private 
void Form1_FormClosing(object senderFormClosingEventArgs e)
        {
                
Params p = new Params();
                
p.SpeicherpfadMusikthis.texboxSpeicherpfadMusik.Text;
                
p.SpeicherpfadBilderthis.texboxSpeicherpfadBilder.Text;
                
p.Username this.texboxUsername.Text;
                
p.Passwort this.texboxPasswort.Text;
                
Params.Save("params.xml"p); 
        } 
Code:
<?xml version="1.0"?>
<Params>
          <Username>Pain</Username>
          <Passwort>1234</Passwort>
          <SpeicherpfadMusik>C:\Users\Pain\Music</SpeicherpfadMusik>
          <SpeicherpfadBilder>C:\Users\Pain\Bilder</SpeicherpfadBilder>
</Params>
nkkk is offline  
Old 06/09/2010, 16:03   #8
 
P-a-i-n's Avatar
 
elite*gold: 0
Join Date: Nov 2009
Posts: 1,258
Received Thanks: 396
in VB ist das aber etwas anders als bei C# mit filestream geht das nicht dazu hat man bei VB den XMLreader

und wenn ich LINQ einbinden würde kommen haufen fehler
C# net is das etwas besser LINQ ist mehr was für XML's datein die auf einem FTP-server liegen wo man bequem änderungen vornehmen kann für updates u.s.w
ich vb steht mir sowas nicht zur verfügung was C# hat daher muss man mit nodes arbeiten daher kann man es nicht wirklich vergleichen

wenn ich z.B XML.LINQ importiere würde das ganze so aussehen

Dim AlleTitel = From T In XDoc...<Einstellungen>...<Einstellung>...<Titel> Select T.Value

alles mit 3 punkte die art ist etwas kürzer aber ein fehler und schon geht garnichts mehr

ich hab meins hier von abgeleitetnur das mir das einlesen nicht gefallen hat das hab ich anderes gemacht



da siehst du das größere unterschiede gibt zwischen C# und VB hab auch ein C# buch für sonderfunktionen aber viele imports hab ich nicht die es in C# gibt
P-a-i-n is offline  
Old 06/09/2010, 18:53   #9
 
elite*gold: 0
Join Date: May 2010
Posts: 793
Received Thanks: 268
Quote:
Originally Posted by P-a-i-n View Post
in VB ist das aber etwas anders als bei C# mit filestream geht das nicht dazu hat man bei VB den XMLreader

und wenn ich LINQ einbinden würde kommen haufen fehler
C# net is das etwas besser LINQ ist mehr was für XML's datein die auf einem FTP-server liegen wo man bequem änderungen vornehmen kann für updates u.s.w
ich vb steht mir sowas nicht zur verfügung was C# hat daher muss man mit nodes arbeiten daher kann man es nicht wirklich vergleichen

wenn ich z.B XML.LINQ importiere würde das ganze so aussehen

Dim AlleTitel = From T In XDoc...<Einstellungen>...<Einstellung>...<Titel> Select T.Value

alles mit 3 punkte die art ist etwas kürzer aber ein fehler und schon geht garnichts mehr

ich hab meins hier von abgeleitetnur das mir das einlesen nicht gefallen hat das hab ich anderes gemacht



da siehst du das größere unterschiede gibt zwischen C# und VB hab auch ein C# buch für sonderfunktionen aber viele imports hab ich nicht die es in C# gibt
hmm, ich dachte immer das sei mehr oder weniger das selbe, abr wenn du meinst, wirds wohl stimmen denn ich hab nie in VB programmiert, aber Für XMLSer braucht man (glaubich) kein LINQ
nkkk is offline  
Old 06/10/2010, 14:08   #10
 
Jay Niize's Avatar
 
elite*gold: 0
Join Date: Oct 2009
Posts: 4,851
Received Thanks: 3,417
naja... so ein richtiges tut' ist es auch nicht ^^
Jay Niize is offline  
Old 06/10/2010, 14:33   #11
 
P-a-i-n's Avatar
 
elite*gold: 0
Join Date: Nov 2009
Posts: 1,258
Received Thanks: 396
was soll ich hier auch groß schreiben es ist nichts schweres zu vb brauch man nicht viel sagen weil es sehr einfach ist und man nicht viel falsch machen kann da wird ein ja alles vorgekaut man muss sich nur das passende suchen
P-a-i-n is offline  
Reply


Similar Threads Similar Threads
[TuT]Datei in einer anderen Datei verstecken
05/01/2013 - Tutorials - 14 Replies
In diesem Tutorial werde ich beschreiben wie man eine beliebige Datei in einer anderen "verstecken" kann. Als Zieldatei kann dafür jede Datei jeglicher Art verwendet werden. Der 1337-Coolness zu liebe verwenden wir aber lieber Bild- , oder auch Musikdateien. Vorerst möchte ich allerdings erklären, dass die Datei nicht wirklich "versteckt" wird sondern nur die beiden Dateien zusammengefügt werden und der Header angepasst wird. Somit ist diese Methode als "unsicher" zu bezeichnen...spassig ist...
.tar Datei in .tgz datei einfügen
05/02/2010 - Main - 0 Replies
Hallo Kann mir jemand sagen wie ich eine .tar datei in eine .tgz datei einfüge Danke im voraus Limus
TXT Datei in DB :S?
04/24/2010 - Metin2 Private Server - 4 Replies
Sers Leute wie mache ich es das ich eine .txt datei in eine DB umwandle (in diesem falle mop_proto) Bitte um hilfe :S
WAV Datei zu MP3
04/21/2010 - Off Topic - 5 Replies
hi , wollt mal fragen wie ich eine aufgenommene datei (VAW) zu einer MP3 Datei mache ?
.CCF datei
08/19/2007 - Technical Support - 6 Replies
Wollte mal fragen was das für Dateien sind und womit man sie öffnet wäre nice!



All times are GMT +1. The time now is 19:44.


Powered by vBulletin®
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2025 elitepvpers All Rights Reserved.