Текущий архив: 2006.10.15;
Скачать: CL | DM;
Внизесть ли модули по редактированию xml Найти похожие ветки
← →
el-eXtremo (2006-08-15 09:25) [0]Интересует, есть ли аналог TInifiles, модуль, способный искать в файле теги и редактировать их содержимое
<DownloadDirectory type="string">C:\Downloads\</DownloadDirectory>
- ><DownloadDirectory type="string">E:\Download\</DownloadDirectory>
← →
evvcom © (2006-08-15 09:31) [1]Закладка Internet: TXMLDocument
← →
el-eXtremo (2006-08-15 09:49) [2]СПС :)
← →
evvcom © (2006-08-15 10:24) [3]ПЖС :)
← →
Сергей М. © (2006-08-15 10:26) [4]см. TurboPower XMLPartner
← →
el-eXtremo (2006-08-15 10:47) [5]Да вроде и без турбопавер можно.
Есть какая-нить инфа по работе с TXMLDocument. Честно говоря в помощи не сильно разобрался. Какой бы нибудь пример..
Я накатал что нашел - но оно стирает исходный файл, а надо редактирвать.
← →
Плохиш © (2006-08-15 10:58) [6]
> Я накатал что нашел - но оно стирает исходный файл, а надо
> редактирвать.
А сохранять не пробовал? (SaveToFile)
← →
el-eXtremo (2006-08-15 13:10) [7]Да вот оно сохраняет стирая исходный.
← →
Плохиш © (2006-08-15 13:25) [8]
> el-eXtremo (15.08.06 13:10) [7]
> Да вот оно сохраняет стирая исходный.
И что?
← →
el-eXtremo (2006-08-15 16:26) [9]эээ...
вобщем Tinifiles напримерMyIniFile := TIniFile.Create("path to ini");
with MyIniFile do
begin
WriteString("Base", "Name", Edit1.Text);
end;
не стирает исходный файл записывая новый, а лишь меняет необходимою строку.
Как это с TXMLDocument можно проделать?
← →
Плохиш © (2006-08-15 18:11) [10]
MyXMLFile := TXMLDocument.Create("path to xml");
// Тут чё-та делаем
MyXMLFile.SaveToFile("path to xml");
← →
el-eXtremo (2006-08-15 18:43) [11]
MyXMLFile := TXMLDocument.Create("path to xml");
// Тут чё-та делаем
MyXMLFile.SaveToFile("path to xml");
Ок, был xml файл с кучей тегов... задача - изменить пару значений в некоторых тегах.
я MyXMLFile := TXMLDocument.Create("path to xml"); потом XMLfile.AddChild("quiz"); и т.д.
MyXMLFile.SaveToFile("path to xml"); создает новый чистый файл с тем что я "что то сделал"
Интересует какой-то пример... хоть какой то.
← →
Плохиш © (2006-08-15 19:14) [12]
var
MyDoc: IXMLNode;
begin
MyXMLFile := TXMLDocument.Create("path to xml");
MyDoc := MyXMLFile.DocumentElement;
MyDoc.AddChild("quiz");
MyXMLFile.SaveToFile("path to xml");
← →
Плохиш © (2006-08-15 19:20) [13]Кстати, рекомендую справку по AddChild внимательно прочитать, особенно последнии строки.
← →
alles © (2006-08-16 10:36) [14]попробуйте и такой вариант
http://www.codenet.ru/progr/delphi/stat/delphi_xml.php
тут все свойства
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/xmlsdk/html/b9f053cf-84cf-4a1c-9d7e-b3aabf9830a2.asp
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/xmlsdk/html/4ead2a13-de31-487e-b826-53f132f25cbb.asp
я где-то читал что TXMLDocument имеет проблемы с памятью
← →
el-eXtremo (2006-08-16 23:32) [15]Разобрался, всем спасибо!!!
alles отдельный респект!
← →
el-eXtremo (2006-08-17 00:34) [16]Не, все таки не получилось.
Помогите =(
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<people>
<age>17</age>
<name>Sergey</name>
....(другие теги)
<title>base</title>
</people>
можете написать пару строк как менять значения age, при этом не меняя name и т.д.
← →
Плохиш © (2006-08-17 10:56) [17]
MyDoc := MyXMLFile.DocumentElement;
MyDoc.ChildNodes["people"].ChildNodes["age"].Text := "15";
← →
el-eXtremo (2006-08-17 22:04) [18]Сделал, что хотел, но есть небольшая проблемма.
Вот xml с которым работаю.<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<DCPlusPlus>
<Settings>
<Nick type="string">el-eXtremo</Nick>
<UploadSpeed type="string">LAN(T3)</UploadSpeed>
<Description type="string">comp</Description>
</Settings>
<Share/>
<NoShare/>
<PreviewApps/>
</DCPlusPlus>
В таком виде изменение Nick происходит как необходимо, но при закрытии программы выскакивает ошибка Runtime Error 216XMLfile := XMLDocument1.Create(XMLDocument1.FileName);
MyDoc := XMLFile.DocumentElement;
MyDoc.ChildNodes["Settings"].ChildNodes["Nick"].Text := Edit1.Text;
XMLfile.SaveToFile(XMLDocument1.FileName);
В этом виде изменения файла xml происходят неверноXMLfile := XMLDocument1.Create(XMLDocument1.FileName);
MyDoc := XMLFile.DocumentElement;
MyDoc.ChildNodes["DCPlusPlus"].ChildNodes["Settings"].ChildNodes["Nick"].Text := Edit1.Text;
XMLfile.SaveToFile(XMLDocument1.FileName);
и дописывает в конец<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<DCPlusPlus>
<Settings>
<Nick type="string">el-eXtremo</Nick>
<UploadSpeed type="string">LAN(T3)</UploadSpeed>
<Description type="string">comp</Description>
</Settings>
<Share/>
<NoShare/>
<PreviewApps/>
</DCPlusPlus>
<DCPlusPlus><Settings><Nick>Edit1</Nick></Settings></DCPlusPlus></DCPlusPlus>
← →
Плохиш © (2006-08-18 01:30) [19]
> XMLfile := XMLDocument1.Create(XMLDocument1.FileName);
Чё це есть такэ?
Тэг "<DCPlusPlus>" является узлом, на который указывает XMLFile.DocumentElement, поэтому его уже не надо указывать как ChildNodes.
← →
el-eXtremo (2006-08-18 10:44) [20]А как надо?
← →
Плохиш © (2006-08-18 10:46) [21]
> MyDoc.ChildNodes["Settings"].ChildNodes["Nick"].Text :=
> Edit1.Text;
← →
el-eXtremo (2006-08-18 18:17) [22]без XMLfile := XMLDocument1.Create(XMLDocument1.FileName); пишет ошибку
← →
el-eXtremo (2006-08-18 22:46) [23]Наверное это уже другая тема, тем более её вроде уже обсуждали.
Всё работает, кроме того, что вылазит error EAccessViolation.
Пробовал такDelphi: устранение ошибки EAccessViolation
Ошибка доступа к памяти. Как правило - выход за пределы массива. Что бы точно установить место недопустимой команды надо в Project/Options/Compiler/Runtime Errors поставить галочку Range checking.
Note. Рекомундую установить все остальные галочки в Runtime Errors - это облегчит контроль других ошибок (а возможно, поможет и в исправлении этой).
но все равно ошибка прежняя.
заметил что если сократить xml файл (удалить половину тегов) прорамма начинает работать. Более того однажды таки скомилировалось.
← →
Плохиш © (2006-08-19 00:17) [24]
> el-eXtremo (18.08.06 18:17) [22]
> без XMLfile := XMLDocument1.Create(XMLDocument1.FileName);
Скажи честно, ты эту дурость сам выдумал, а ли вычитал где?
← →
el-eXtremo (2006-08-19 00:23) [25]В нете нашел... :)
← →
el-eXtremo (2006-08-19 00:25) [26]Да какая разница, не работает все равно
XMLfile := XMLDocument1.Create(nil);
тоже самое
← →
Плохиш © (2006-08-19 00:33) [27]
> el-eXtremo (19.08.06 00:25) [26]
Иди улицу мести.
← →
el-eXtremo (2006-08-19 00:46) [28]я с тобой...
← →
Frozzen (2006-09-06 19:54) [29]XMLDocument c русскими символами же не работает?
если встретиться <Nick type="Вася">?
← →
palva © (2006-09-06 21:39) [30]> XMLDocument c русскими символами же не работает?
Это почему? У меня почему-то работает. Вот пример, который читает из XML файла название валюты по русски в Win1251. Потом я перевожу его в дос кодировку и печатаю.
{$APPTYPE CONSOLE}
{ Информатор о курсе валют }
uses
ActiveX, XMLDoc, XMLIntf, Windows;
var
XMLDoc2: IXMLDocument;
iRoot, N1: IXMLNode;
iCN: IXMLNodeList;
sc, so: String;
i: Integer;
begin
CoInitialize(Nil);
XMLDoc2:=TXMLDocument.Create("http://www.cbr.ru/scripts/XML_daily.asp");
iRoot := XMLDoc2.DocumentElement;
WriteLn("На дату ", iRoot.Attributes["Date"]);
N1 := iRoot.ChildNodes[0];
for i:=1 to iRoot.ChildNodes.Count do begin
if (N1.Attributes["ID"] = "R01235") Or
(N1.Attributes["ID"] = "R01239") Or
(N1.Attributes["ID"] = "R01820") then begin
iCN := N1.ChildNodes;
Write(" За ", iCN.FindNode("Nominal").Text, " ");
sc := iCN.FindNode("Name").Text;
SetLength(so, Length(sc));
CharToOem(PChar(sc), PChar(so));
Write(so, " ");
Write(iCN.FindNode("Value").Text, " ");
WriteLn("рублей");
end;
N1 := N1.NextSibling;
end;
CoUninitialize;
end.
Страницы: 1 вся ветка
Текущий архив: 2006.10.15;
Скачать: CL | DM;
Память: 0.52 MB
Время: 0.04 c