02.08.2007, 18:53 | #1 |
Участник
|
Доброго времени суток.
Я столкнулась со следующей проблемой, импортируя xml файл. В моем xml-файле содержатся теги вида <my:name> и т.п. Когда я импортирую файл, выскакивает сообщение вида "The XML Parser return the following fatal error: Undeclared prefix. Line=4, Colomn number=12". А на этом месте у меня как раз стоит двоеточие. Приведу код, с помощью которого хочу произвести импортирование: ImpotrFile.OPEN('D:\Form1.xml'); ImportFile.CREATEINSTREAM(incomeStream); xmlvalue.SETSOURCE(incomeStream); xmlvalue.IMPORT; ImportFile.CLOSE; P.S. Для XML файла, не содержащего в тегах двоеточия, импорт производится без проблем. Может, кто-нибудь сталкивался с похожей ситуацией. Помогите советом. Спасибо. |
|
03.08.2007, 20:14 | #2 |
Участник
|
Могу предложить одно из решений, которое, возможно, не является оптимальным: удалять двоеточия. Это можно сделать, создав временный файл, в который записывать OutStream уже без двоеточий, а потом из этого же времменого файла читать InStream и импортировать уже его. Приведу пример, как это может выглядеть:
inportFile.OPEN(bla-bla-bla); inportFile.CREATEINSTREAM(incomeStream); tmpfile.CREATETEMPFILE; tmpfile.CREATEOUTSTREAM(outcomeStream); {Логика может быть любой. Я читала InStream по одному символу, и записывала в OutStream все данные, кроме двоеточий. Для моего файла такой вариант хорошо подошел. Можно удалять двоеточия непосредственно в теге, чтобы не портить другое данные. Идея понятна.} WHILE NOT (incomeStream.EOS()) DO BEGIN incomeStream.READTEXT(str, 1); IF (str = ':') THEN incomeStream.READTEXT(str, 1); outcomeStream.WRITETEXT(str); END; tmpfile.CREATEINSTREAM(correctStream); xmlvalue.SETSOURCE(correctStream); xmlvalue.IMPORT; tmpfile.CLOSE; inportFile.CLOSE; |
|