• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Parsen einer Datei

Status
Für weitere Antworten geschlossen.

Puccini

Neues Mitglied
Hi!

Ich hab folgendes Problem:

ich will eine per vbs erstellte Datei parsen.
die datei heist test.xml
drin sthet:
Code:
<?xml version="1.0" encoding='UTF-8'?>
<Test>Hallo</Test>
Gespeichert wurde sie als Unicode.
Leider klappt da das einlesen nicht. es wird mir nix ausgegebn
wenn ich sie als Ansi speicher klappt das auslesen, jedoch nur solange wie keine ä ö oder ü vorkommen....

Ich kann aber nicht ausschliesen das diese Zeichen auftretten!
Daher wollte ich gern Unicode als encoder....
Noch beser wäre natürlich utf-8, doch da weis ich net wie ich eine textdatei mittels vbs in diesem format speicher..

gibt es eine möglichkeit meine unicodedatei mittels php auszulesen?
hab auch schon versucht in die xml bei encoding="UNICODE" reinzuschreiben. hilft auch nicht.

weis wer rat?
 
scheint geklappt zu haben :D

danke :D
meine datei hab ich jetzt mittels vbs und dieser zeile:
Code:
        'Erstellt die Datei, wenn vorhanden überschreiben, Unicode
Set Datei=fso.CreateTextFile(rechnerdatei,true,true)
erstellt
drin steht:
Code:
<?xml version="1.0" encoding='UTF-8'?>
und meine tags.

und es werden mir dann beim auslesen die öäü wieder richtig angezeigt:D

fein fein :>
danke!
 
sorry für doppelpost..

ging es nicht auch irgendwie das ich direkt einen eintrag in einer xml ansprechen konnte??

ich weis zB das meine xml immer wie folgt aufgebaut ist:

Code:
<Daten>
<Teil1>blabla</Teil1>
<Teil2>rababer</Teil2>
</Daten>

Gibts irgendwie einen Weg wie ich dierkt auf den Wert von Teil2 zugreifen kann ohne das gesammte Dokumment parsen zu müssen??
Oder ist es hier nur mittels eines Arrays möglich, welches ich vorher mit den Daten fülle?
Wenn ja, wie mache ich das am besten mit dem array

thx:>
 
Habs jetz auf simplexml versucht.

Ich komme auch wunderbar an alles ran.
ABER!

Meine äöü werden immer noch falsch ausgelesen -.-
wie muss ich den das anstellen damit das endlich mal klappt :<

Da ich die XML aus einem VBScript heraus erzeuge kann ich die Datei nur unter ANSI oder UNICODE erstellen.
Jetzt hab ich UNICODE (aber ANSI geht genausowenig)
Im xml steht oben drin UTF-8
Muss ich da was anderes eintragen?
-.-
pls help :<
kann ja net so schwer sein öäü's darzustellen :<
 
Hi!

Wie schaffe ich es eine Fehlerbehandlung bei der Auswertung meiner XML einzubauen???

Ich hatte jetzt ein paar xml bei denenn es ging, und einige wo es nicht ging.
da kommen dann viele zeilen mit fehlern. das ist aber nicht sinn und zweck, wenn fehler kommen, soll nur eine von mir definierte Fehlermeldung dem user presentiert werden.

ich hab eine funktion getXMLDaten()
in dieser stehen die SimpleXML aufrufe drin und da werden die Daten in ein Array gespeichert.
kann ich da jetzt einfach beim aufruf folgendes schreiben:
Code:
$NeueDaten = @getXMLDaten();
???
und dann auswerten:
Code:
if(!$NeueDaten) echo "Fehler"
:?:
 
Alle meine Glaskugeln sind kaputt, daher weiß ich leider nicht was deine Funktion im normalfall oder im fehlerfall zurück gibt.

Und zur fehlerunterdrückung gildt das, wenn du keine Fehler ausgeben willst du error_reporting(); benutzen sollst, da ein @ vor den entsprechenden funktionen extrem zeit frisst. ;)
 
wie gesagt, ich hab die funktion in der die xml gelesen wird und der inhalt in ein array gespeichert wird!
nun kann ich aber nich fragen ob das array=null ist, da es ja sein kann das der fehler erst beim 4 oder 6 datensatz auftritt, somit stehen ja schon werte im array...

ich bekomme halt bei dem simplexml einen fehler!
bisher ist mir aber noch unklar warum XD
wenn ich das rausgefunden hab gehts vielleicht auch anders.
aber grundsätzlich würde ich gern die fehlermeldung abfangen und als eigenen text wieder ausgeben..

:<
nur wie
das mit dem error_reporting weis ich net gleich wies gehen soll?
kannste das mal näher erklären?
ich kann da quasi meinen eigenen fehlercode anstelle eines aufgetrettenen fehlers setzten? also 0, damit kein fhler aufgetretten is?
 
ich lese mehre dateien aus einem ordner hintereinander ein,

so in etwa:

Code:
    while ($file = readdir ($handle)) {
            //wenn es sich nicht um einen Ordner handelt
                if(!is_dir($ordner."/".$file)) {
                    //wenn es eine XML-Datei ist
                    if(strtolower(strrchr($file,"."))==".xml")
                    {
                        $xml = simplexml_load_file($ordner."/".$file);
                            writeXMLDaten($xml);

in writeXMLDaten wird dann erst die funktion GetDaten aufgerufen, welche die Werte in ein Array list, anschliessend sollen die Daten (wenn kein Fehler aufgetretten ist) in die Datenbank geschriben werden.

Also müsste ich irgendwie wissen wie ich da ermitteln kann ob ein fehler beim einlesen der Daten aufgetretten ist oder nicht...
kann ich den funktionsaufruf von getdaten mit einer try-catch einschliessen um so fehler abzufangen? oder kommen dann trotzdem nch die warnmeldungen?
 
ich glaube ich konnte den fehler beheben...

so sieht jetzt mein Code aus zum parsen der Daten:

Code:
    $PCDaten['Daten1'] = utf8_decode(trim($xmlInhalt->MeineDaten->Informationen->Daten1));
da kommt schon mal kein fehler mehr!

ABER:

ich mache nach dem Parsen einen link zu der XML datei, damit der user nochmals in der Datei nachlesen kann.
Unter Firefox funktioniert es, aber der IE bringt folgenden Fehler:

Code:
 [FONT=verdana]Die XML-Seite kann nicht angezeigt werden  [/FONT]
[FONT=verdana]Die XML-Eingabe kann nicht angezeigt werden,  wenn Stylesheet verwendet wird. Beheben Sie den Fehler und klicken Sie dann auf  [URL="javascript:location.reload()"]Aktualisieren[/URL], oder  wiederholen Sie den Vorgang später.  [/FONT]
  [FONT=verdana][B]Wechseln zwischen aktueller und  angegebener Verschlüsselung wird nicht unterstützt. Fehler beim Bearbeiten der  Ressource 'h...[/B][/FONT]
[COLOR=blue]<?xml version="1.0" encoding="ISO-8859-1"?>
[/COLOR]

Die Datei ist UNICODE gespeichert.
Wie kann ich das beheben?? :<
 
hmmmm..

wenn ich das encoding weglasse in der xml gehts in beiden browsern!
das is ja mal komisch..
da mach ich das so wenns geht :<
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben