|
|
Quellcode
|
1 2 3 4 5 |
<?xml version="1.0" standalone="yes" ?>
<TESTXML>
<Daten NAME1 ="peter" />
<Daten NAME2 ="horst" />
</TESTXML>
|
|
|
C/C++-Quelltext
|
1 2 3 4 5 6 7 8 |
uint nummer = 1; XmlDocument doc = new XmlDocument(); doc.Load(@"C:\Users\Martin\Desktop\neu.xml"); XmlElement root = doc.DocumentElement; foreach (XmlNode @daten in root.ChildNodes) { Console.WriteLine("NameX = " + @daten.Attributes["NAME" + nummer].InnerText); } |
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Halloman« (27. Juli 2010, 09:57)
|
|
Quellcode
|
1 2 3 4 5 6 7 8 |
DataSet ds = new DataSet(); DataTable dt = new DataTable(); ds.ReadXml(@"C:\Users\Administrator\Desktop\blub.xml"); dt = ds.Tables[0]; Console.WriteLine(dt.Rows[0][0].ToString()); Console.Read(); |

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »I3iLLiG« (27. Juli 2010, 14:57)
|
|
C/C++-Quelltext
|
1 |
Exception of type 'System.OutOfMemoryException' was thrown.
|
Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »Halloman« (29. Juli 2010, 09:39)
|
|
C/C++-Quelltext
|
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 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 |
#include <iostream> #include <fstream> //==================================> using namespace std; //ne FIFO-Struktur zum dynamischen abspeichern der Strings. Hab ich irgendwann mal zur Übung geschrieben und hab endlich mal ne Möglichkeit das modifiziert einzusetzen :) //die is hier gerade ziemlich unsauber, aber ich habe gerade nur noch sehr wenig Zeit ^^ Wen d Lust hast, kannst du die ganzen unnützen Variablen noch löschen und das ganze nohc mal um die Hälfte der Zeilen verkürzen class tnode { public: char *data; tnode *next; tnode *last; int bytes; bool isend; }; class rohr { public: rohr(); void pop(char *string); void push(char *string, unsigned int bytes_to_write); int getNextbytes(); bool isEnd(); private: tnode *anfang; tnode *ende; }; rohr::rohr() { anfang = 0; ende = 0; } void rohr::push(char *string, unsigned int bytes_to_write) { tnode *last; tnode *node = new tnode; if (anfang==0) { node->last = 0; anfang=node; //falls es noch keinen anfang gibt, nehme den hier ende = 0; anfang->isend = true; } else { ende->next = node; node->last = ende; node->isend = false; } ende = node; node->data = (char *) malloc(bytes_to_write+1); strcpy(node->data, string); node->bytes = bytes_to_write; } int rohr::getNextbytes() { return anfang->bytes; } void rohr::pop(char *string) { int bytes = anfang->bytes; memset(string, 0, bytes); strcpy(string, anfang->data); //=============>Ab hier ist die Datenberechnung zu Ende tnode *old; old = anfang; anfang = anfang->next; delete old; } void strcpyex(char *ziel, char const *quelle, unsigned int bytes_to_cpy) { memset(ziel, 0, bytes_to_cpy+1); for (int i=0;i<bytes_to_cpy;i++) { ziel[i] = quelle[i]; } } // Funktioniert bis zu einer Dateigröße von 4 GB (is wohl bei einer XML Datei nicht so tragisch) // So lange unsigned int 32 Bit hat unsigned int getFileSize(const char *file_name) { std::ifstream file(file_name); file.seekg(0,std::ios::end); return file.tellg(); } //==>by eViLiSSiMo (schnell mal gegooglet) bool isPattern(char *buffer, char const *pattern, unsigned int MAX_BYTES) { //printf("isPattern called:\nbuffer : %s\npattern: %s\nMAX_BYTES: %d\n\n", buffer, pattern, MAX_BYTES); for (unsigned int i=0;i<MAX_BYTES;i++) { if (buffer[i]!=pattern[i]) return false; } return true; } int main(int argc, char argv[]) { unsigned int anz = 0; rohr speicher; int a = 0; char const pattern[] = "<Daten NAME"; const char filename[] = "test.txt"; unsigned int size_f = getFileSize(filename) + 1; char buffer[size_f]; //====>Auslesen fstream f("test.txt", ios::in); f.read(buffer, size_f); f.close(); //==>Auswerten char swap[100]; //länger wird der Name wohl nicht sein. Ansonsten musst du ihn eben noch vergrößern for (unsigned int i=0;i<size_f-4;i++) { if (isPattern(buffer+i, pattern, sizeof(pattern)-2)) //wenn er ein Namen gefunden hat { for (a=0;buffer[i+a]!='/';a++) { } strcpyex(swap, buffer+i, a-1); speicher.push(swap, a); anz += 1; } } //==========>Ausgeben for (int i=0;i<anz;i++) //das ist jetzt natürlich nicht ästhetisch, aber es funktioneirt ;) { speicher.pop(swap); printf("%s\n", swap); } return 0; } |
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »@night@« (29. Juli 2010, 10:54)
Hits heute: 501 | Hits Tagesrekord: 19 503 | Hits gesamt: 993 511 | Hits pro Tag: 2 116,42

