Einzelnen Beitrag anzeigen

Benutzerbild von Back2Code
Back2Code

Registriert seit: 6. Feb 2012
Ort: Deutschland
272 Beiträge
 
Delphi XE7 Professional
 
#1

XML Attribut auslesen - Konnte nicht in Typ (OleStr) konvertiert werden

  Alt 2. Okt 2013, 15:04
Also ich bin grad dran Attribute auszulesen aus einer Xml. Das klappt soweit auch ganz gut bis zum jetzigen Moment. Ich bekomme die Meldung beim Versuch das Attribut status auszulesen.

Bis sLangId klappt alles wunderbar und danach kommt der Fehler. Hab durchs googlen / Dokumentation lesen leider so gut wie nichts rausbekommen und bevor ich noch mehr Zeit in Recherchen stecke die eventuell an der falschen Stelle angesetzt sind frage ich hier mal nach.

https://dl.dropboxusercontent.com/u/...5945000183.png

Delphi-Quellcode:
type
  XMLDocument: TXMLDocument;

var
  i, j: Integer;
  sPath: String; // Pfad zur Sprachxml
  sTaskType: String; // Import oder Transfer
  sContext: String;
  sOriginalStatus: String;
  sNativeText: String;
  sLangId: String;
  sStatus: String;
  sTranslated: String;
  TransNodes: IXMLNodeList;

begin
    if OpenDialog.Execute then
    begin
      try
        sPath := OpenDialog.FileName;
        edFilePath.Text := (sPath);
        XMLDocument.LoadFromFile(sPath);
        if Assigned(XMLDocument) then
        begin
          TransNodes := XMLDocument.DocumentElement.ChildNodes['targets'].ChildNodes['target'].ChildNodes['stringdata'].ChildNodes;

          for i := 0 to 100 {TransNodes.Count} -1 do
          begin
            sContext := TransNodes[i].Attributes['name'];
            sOriginalStatus := TransNodes[i].Attributes['status'];

            //ShowMessage(IntToStr(TransNodes[i].ChildNodes.Count)); // 6 childs beim debug

            for j := 0 to TransNodes[i].ChildNodes.Count -1 do
              begin
                if TransNodes[i].ChildNodes[j].NodeName = 'nativethen
                  sNativeText := TransNodes[i].ChildNodes['native'].Text;
                 // Delete(sNativeText, Length(sNativeText), 1);
                 // Delete(sNativeText, 1, 1);

                if TransNodes[i].ChildNodes[j].NodeName = 'langthen
                  sLangId := TransNodes[i].ChildNodes[j].Attributes['id'];
                  //sStatus := TransNodes[i].ChildNodes[j].Attributes['status'];
                  //sTranslated := TransNodes[i].ChildNodes[j].Text;

              Memo.Lines.Add(sContext + ' ' + sOriginalStatus + ' ' + sNativeText + ' ' + sLangId + ' ' + sStatus + ' ' + sTranslated);
              end;

          end;

        end;
      finally

      end;
    end;
end;
00111100001100110010000001000100011001010110110001 1100000110100001101001
  Mit Zitat antworten Zitat