tutorials.de Buch-Aktion 05/2012
Like Tree2Danke
  • 1 Beitrag von ComFreek
  • 1 Beitrag von ComFreek
ERLEDIGT
JA
ANTWORTEN
13
ZUGRIFFE
1743
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    paebels paebels ist offline Mitglied Gold
    Registriert seit
    Aug 2011
    Beiträge
    100
    Hallo

    ich habe ein Program welches aus einer schlichten .txt Einträge ausliest um damit z.B.
    das Kopieren von Dateien zu verbieten. Eine Whitelist benutzte ich für sowas. Nun kommt aber mehr dazu und ich möchte es einmal mit XML versuchen. Also müsste ich da seben genannte unterbringen und zum Beispiel noch Laufwerke auf die man zugreift.

    Hat jemand ein nette todo wie man sowas sauber macht? Oder an dem eben genannten mir ein Beispiel zaubert?
    MFG
    Oli
     

  2. #2
    Avatar von ComFreek
    ComFreek ComFreek ist gerade online [x] Let it be logic!
    tutorials.de Moderator
    Registriert seit
    Jun 2009
    Beiträge
    2.366
    Blog-Einträge
    4
    Hallo paebels,

    Ein todo gibt es meiner Meinung nicht direkt Das ist je nach den zu speichernden Daten unterschiedlich.

    Aber hier mal ein Beispiel für deine Situation:
    Code xml:
    1
    2
    3
    4
    5
    6
    7
    
    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <paebels_copytool>
      <whitelist>
        <filename>C:\...\test.txt</filename>
        <filename>C:\...\to_copy.exe</filename>
      </whitelist>
    </paebels_copytool>
    Oder auch einzelne Ordnerstrukturen mit mehr Dateieigenschaften sind möglich:
    Code xml:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    
    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <paebels_copytool>
      <whitelist>
        <dir path="C:\Users\ComFreek\Documents\">
          <file executable="true" lastModified="10.11.2011" mime="application/octet-stream">to_copy.exe</file>
        </dir>
     
        <dir path="C:\Users\ComFreek\Pictures\">
          <file executable="false" lastModified="10.11.2011" mime="text/plain">test.txt</file>
        </dir>
      </whitelist>
    </paebels_copytool>
    paebels bedankt sich. 
    mfg ComFreek

    Falls ich dir geholfen habe, würde ich mich über ein DANKE freuen!
    Kenn mich am besten aus in C++, WEB-Sprachen (PHP, HTML, JavaScript) und vllt. mehr
    [PHP] Überprüfen, ob Website erreichbarSicherheit in PHP-Codes schaffenGoogle Chrome-Extension für tutorials.dejson_compress()

  3. #3
    paebels paebels ist offline Mitglied Gold
    Registriert seit
    Aug 2011
    Beiträge
    100
    Hallo
    kannst Du mir auch sagen wie man das mit Code dann ausliest?Z.B c++ oder c# .net Ich nutze gerad eine txt datei und lese jede zeile ein.
    MFG
    Oli
    Geändert von paebels (15.11.11 um 15:31 Uhr)
     

  4. #4
    paebels paebels ist offline Mitglied Gold
    Registriert seit
    Aug 2011
    Beiträge
    100
    Hallo ich hab emich heute erst wiedre damit beschäftig und ich hba edie Idee es so zu machen.
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
    <?xml version="1.0" encoding="UTF-8"?>
    <kopieren>
    <erlaubte_dateien>
        <whitelist>
        <dateiendung>.txt</dateiendung>
        <dateiendung>.jpg</dateiendung>
        <dateendung>.log</dateendung>
        </whitelist>
    </erlaubte_dateien>
    </kopieren>
    Idee ist das ich mit kopieren anfange und weiter zu den erlaubten Dateiendungen gehen will. Grund ich möchte Später noch eine Fehlerliste erstellen in der XML um die Fehler die auftreten an das Server Event log zu schicken. Ist das so vom Prinzip her ok? Oder völlig falsch? Muss ich gleich was ändern anders machen? Nachtrag meine Funktionen prüfen erst auf die Endung selbst und später noch mal den Dateiheader(um Datei Änderungen festzustellen) wäre es nun Sinnvoll in die XML die Codes einzubinden für die Dateiheader? Und dann wie und wo und in HEX oder Dezimal? Hoffe mich versteht noch wer MFG
    Oli
    Geändert von paebels (15.11.11 um 15:40 Uhr)
     

  5. #5
    paebels paebels ist offline Mitglied Gold
    Registriert seit
    Aug 2011
    Beiträge
    100
    So habe es so gemacht
    Code :
    1
    2
    3
    4
    5
    6
    
    <?xml version="1.0" encoding="UTF-8"?>
    <whitelist>
        <dateiendungen  Name = ".txt" ></dateiendungen>
        <dateiendungen  Name = ".jpg"></dateiendungen>
        <dateiendungen  Name = ".log'"></dateiendungen>
    </whitelist>

    Ziemlich einfach gehalten und anstatt Text lese ich halt die Atribute Name aus und verarbeite diese weiter,KP ob das so ok ist es geht aber.Hier mal der auslese Code für Leute sowas machen wollen
    Code :
    1
    2
    3
    4
    5
    6
    7
    
    System::Xml::XmlDocument^ config = gcnew XmlDocument();
            config->Load("res\\config\\Copy.xml");
            System::Xml::XmlElement^ root = config->DocumentElement;
            for each(XmlNode^ node in  root->ChildNodes)
            {
                this->erlaubte_dateien.push_back(marshal_as<std::string>(node->Attributes["Name"]->InnerText->ToString()));
            }

    MFG

    Oli
    Geändert von paebels (17.11.11 um 16:21 Uhr)
     

  6. #6
    Avatar von ComFreek
    ComFreek ComFreek ist gerade online [x] Let it be logic!
    tutorials.de Moderator
    Registriert seit
    Jun 2009
    Beiträge
    2.366
    Blog-Einträge
    4
    Hallo paebels,

    okay du hast es schon geschafft, es mit C# auszulesen

    Code xml:
    1
    2
    3
    4
    5
    6
    
    <?xml version="1.0" encoding="UTF-8"?>
    <whitelist>
        <dateiendungen  Name = ".txt" ></dateiendungen>
        <dateiendungen  Name = ".jpg"></dateiendungen>
        <dateiendungen  Name = ".log'"></dateiendungen>
    </whitelist>
    Ein paar "stilistische" Mängel von mir:
    1. Ich würde noch ein Eltern-Element für alle Dateiendungen machen (<dateiendungen>) oder eben die vorhandenen Tags zu <dateiendung> (Singular) umbennenen.
    2. Die Dateiendung würde ich in den Tag-Inhalt schreiben und nicht als Name-Attribut. (Übrigens kannst du den schließenden Tag weglassen, wenn du den "Inhalt" nicht benutzt: <tag />).
    3. Den Punkt bei der Dateiendung würde ich auch weglassen, wobei dies aber eher Geschmackssache ist

    Code xml:
    1
    2
    3
    4
    5
    6
    
    <?xml version="1.0" encoding="UTF-8"?>
    <whitelist>
      <dateiendung>txt</dateiendung>
      <dateiendung>jpg</dateiendung>
      <dateiendung>log</dateiendung>
    </whitelist>

    Und dann wie und wo und in HEX oder Dezimal?
    Da würde ich HEX tendieren, es wird ja oft auch so angegeben.
    paebels bedankt sich. 
    mfg ComFreek

    Falls ich dir geholfen habe, würde ich mich über ein DANKE freuen!
    Kenn mich am besten aus in C++, WEB-Sprachen (PHP, HTML, JavaScript) und vllt. mehr
    [PHP] Überprüfen, ob Website erreichbarSicherheit in PHP-Codes schaffenGoogle Chrome-Extension für tutorials.dejson_compress()

  7. #7
    paebels paebels ist offline Mitglied Gold
    Registriert seit
    Aug 2011
    Beiträge
    100
    Hallo kannst Du mir einmal erklären wann man nun Attribute nimmt und wann Text zwischen den Tags?
    Ich komme nicht zu einer übersichlichen Struktur! Ich möchte auch Laufwerke bestimmen aus der Datei und Flags setzen wie erlauben (yes oder no) Als Beispiel finde ich aber immer nur eine Variante. Ich hab emich gerade an der Stelle völlig verrannt.
    Code :
    1
    2
    3
    4
    5
    6
    7
    
    <?xml version="1.0" encoding="UTF-8"?>
    <whitelist Citrix="yes" Citrix_C="no">
        <config  Endung_erlauben = ".txt"  Laufwerke = "C" ></config>
        <config  Endung_erlauben = ".doc" Laufwerke = "Z"></config>
        <config  Endung_erlauben = ".log" Laufwerke = "Wo auch immer"></config>
        <config  Endung_erlauben = ".jpg" Laufwerke = ""></config>
    </whitelist>
    MfG
    oli

    p.s. vor allem habe icvh mich wohl verrannt weil ich das auslesen noch nicht richt drauf habe.Bitte um Hilfe
     

  8. #8
    Avatar von ComFreek
    ComFreek ComFreek ist gerade online [x] Let it be logic!
    tutorials.de Moderator
    Registriert seit
    Jun 2009
    Beiträge
    2.366
    Blog-Einträge
    4
    Hallo paebels,

    grob gesagt: Wenn der Inhalt des Tags den Namen des Tag wiederspiegelt, dann ist es richtig:

    Dein Beispiel:
    Code xml:
    1
    2
    
    <!-- 1 --> <dateiendungen  Name = ".txt" ></dateiendungen>
    <!-- 2 --> <dateiendung>txt</dateiendung>
    Der Inhalt des Tags (txt) bezieht sich eindeutig auf den Namen des Tags (dateiendung).

    Bei deinem XML jetzt, würde ich anmerken, dass der Tag-Name gar nicht den Inhalt oder die Attribute des Tags irgendwie benennt - es heißt einfach nur config.
    So würde ich es vorschlagen:
    Code xml:
    1
    2
    
    <dateiendung laufwerke="C;D;">txt</dateiendung>
    <dateiendung laufwerke="F;Z;">doc</dateiendung>

    p.s. vor allem habe icvh mich wohl verrannt weil ich das auslesen noch nicht richt drauf habe.Bitte um Hilfe
    Mit C# kenne ich mich leider nicht so aus. Aber ich könnte dir ein Beispiel in C++ schreiben.
     
    mfg ComFreek

    Falls ich dir geholfen habe, würde ich mich über ein DANKE freuen!
    Kenn mich am besten aus in C++, WEB-Sprachen (PHP, HTML, JavaScript) und vllt. mehr
    [PHP] Überprüfen, ob Website erreichbarSicherheit in PHP-Codes schaffenGoogle Chrome-Extension für tutorials.dejson_compress()

  9. #9
    paebels paebels ist offline Mitglied Gold
    Registriert seit
    Aug 2011
    Beiträge
    100
    Danke für die Prompte Antwort ich mach Visual C++ nicht C#
    mein Plan war jetzt so :
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    
    <?xml version="1.0" encoding="UTF-8"?>
    <!-- New document created with EditiX at Mon Nov 28 15:43:26 CET 2011 -->
     
    <KONFIGURATION Cirtix="" Citrix_C="">
    <ERLAUBTE_DATEIEN>
        <DATEIEINDUNG>.txt</DATEIEINDUNG>
        <DATEIEINDUNG>.log</DATEIEINDUNG>
        <DATEIEINDUNG>.log</DATEIEINDUNG>
    </ERLAUBTE_DATEIEN>
    <BEREITGESTELLTE_LAUFWERKE>
        <LAUFWERK>C</LAUFWERK>
        <LAUFWERK>X</LAUFWERK>
        <LAUFWERK>Z</LAUFWERK>
    </BEREITGESTELLTE_LAUFWERKE>
    </KONFIGURATION>

    Konfiguration als ober Tag da ich damit ja mein Program konfiguriere. Danach das was ich erlauben will also gewisse Dateien die ich erstmal mal nur auf diese Endung prüfe, später auch den Header lese zur Sicherheit. Und dann muss ich noch Laufwerke einbinden die ich wie oben zu sehen aus der config haben möchte. Die 2 Attribute habe ich gesetzt um gewisse Funktionen gleich zu unterbinden. Nur wie lese ich das wirklich sauber aus? Und ist der Ansatz so ok? Liest man sowas als Objekt ein in eine Arraylist? Oh man ich habe soviele Fargen, weil ich das früher immer mit einer txt Datei gemach habe und da einfach readline()
    MfG

    Oli
    Geändert von paebels (28.11.11 um 15:54 Uhr)
     

  10. #10
    Avatar von ComFreek
    ComFreek ComFreek ist gerade online [x] Let it be logic!
    tutorials.de Moderator
    Registriert seit
    Jun 2009
    Beiträge
    2.366
    Blog-Einträge
    4
    Ich glaube du machst dir zu viele Gedanken um deine Konfigurations-Datei
    Klar, Planung ist sehr gut, aber wenn dann die Planung die eigentliche Entwicklung abhält, macht man meiner Meinung nach etwas falsch.

    Gut, nun wie liest man das ein?

    Du könntest zum Beispiel TinyXML++ nutzen, welches wirklich sehr leicht und schnell aufzusetzen geht (max. 10 Minuten)!
     
    mfg ComFreek

    Falls ich dir geholfen habe, würde ich mich über ein DANKE freuen!
    Kenn mich am besten aus in C++, WEB-Sprachen (PHP, HTML, JavaScript) und vllt. mehr
    [PHP] Überprüfen, ob Website erreichbarSicherheit in PHP-Codes schaffenGoogle Chrome-Extension für tutorials.dejson_compress()

  11. #11
    paebels paebels ist offline Mitglied Gold
    Registriert seit
    Aug 2011
    Beiträge
    100
    Hallo

    das muss ich , da es ein Projekt ist welches ich als Abschlußarbeit abegebn will. Und so doof es klingt ohne XML kann ich es gar nicht abgeben. Daher möchte ich halt eine ganz einfache aber subere xml Datei erstellen. Mein Programm steht soweit ich bin eigentlich am Tunen. Auch wenn ich da einige Funktionen neu schreiben muss. Wäre nicht die erste
    MFG
    Oli


    p.s fürs lesen benutze ich die in Visual C++ Class XML mit XML Reader etc. Quasi wie in C#
    Habe mich nun dafür entschieden einfach weil ich so prüfen kann hat Attribute, wenn noch wer sagen mag ob es ok ist oder nicht wäre es fein!
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    
    <?xml version="1.0" encoding="UTF-8"?>
    <!-- New document created with EditiX at Mon Nov 28 15:43:26 CET 2011 -->
     
    <KONFIGURATION Cirtix="" Citrix_C="">
    <ERLAUBTE_DATEIEN>
        <DATEIEINDUNG NAME=".txt"/>
      <DATEIEINDUNG NAME=".log"/>
      <DATEIEINDUNG NAME=".jpg"/>
    </ERLAUBTE_DATEIEN>
    <BEREITGESTELLTE_LAUFWERKE>
        <LAUFWERK NAME="C"/>
      <LAUFWERK NAME="Z"/>
      <LAUFWERK NAME="X"/>
    </BEREITGESTELLTE_LAUFWERKE>
    </KONFIGURATION>
    Geändert von paebels (28.11.11 um 16:32 Uhr)
     

  12. #12
    Avatar von sheel
    sheel sheel ist gerade online Moderator
    tutorials.de Moderator
    Registriert seit
    Jul 2007
    Beiträge
    4.506
    Leicht OT: Wenn du in "Visual C++" eine C#-Klasse benutzt,
    hast du da C++/CLI.
     
    Netiquette (vA §15) und Nutzungsregeln (vA §4.8) einhalten! Programmcode in Codetags/Codeboxen.
    Sehr gute Beiträge bitte Bewerten (Stern darunter oder "Danke").
    "Funktioniert nicht" ist zu ungenau! Code, Fehlermeldungen, Verhalten des Programms, ...?

  13. #13
    paebels paebels ist offline Mitglied Gold
    Registriert seit
    Aug 2011
    Beiträge
    100
    Dachte das wäre klar c++/cli kenne ich auch unter dem Namen Visual C++. So steht es zumindest im Mircrosoft Buch.
    MfG
    oli
     

  14. #14
    deepthroat deepthroat ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jun 2005
    Beiträge
    8.169
    Zitat Zitat von paebels Beitrag anzeigen
    Dachte das wäre klar c++/cli kenne ich auch unter dem Namen Visual C++. So steht es zumindest im Mircrosoft Buch.
    Nein, Visual C++ ist ein Produkt.

    Der darin enthaltene Compiler versteht C, C++ und C++/CLI.

    Gruß
     
    If at first you don't succeed, try again. Then quit. No use being a damn fool about it.

Ähnliche Themen

  1. Antworten: 16
    Letzter Beitrag: 23.12.09, 09:15
  2. c# config datei erstellen...
    Von xlon im Forum .NET Windows Forms
    Antworten: 9
    Letzter Beitrag: 02.07.09, 18:57
  3. Config-Datei parsen
    Von time-master im Forum Javascript & Ajax
    Antworten: 6
    Letzter Beitrag: 22.10.05, 10:12
  4. App.config-Datei bearbeiten
    Von JK_net im Forum .NET Archiv
    Antworten: 5
    Letzter Beitrag: 12.11.04, 12:29
  5. .bin datei zum erstellen einer config datei
    Von nox im Forum Sonstige Sprachen
    Antworten: 0
    Letzter Beitrag: 21.08.04, 14:25