![]() |
|
|
#1
|
|||
|
|||
|
Здравствуйте. я пытаюсь работать над созданием простого XML-редактора.работаю с классом TXmlDocument,на данный момент программа читает заданый файл,вкидывает в Memo,мне нужно сделать подсветку синтаксиса,и открытие файла из папки,вместо открытия прописаного файла...
программа работает немного кривовато...помогите кто чем может... Код:
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, xmldom, XMLIntf, msxmldom, XMLDoc, StdCtrls, ComCtrls, Buttons;
type
TForm2 = class(TForm)
Button1: TButton;
XMLDocument1: TXMLDocument;
Memo1: TMemo;
FileOpenDialog1: TFileOpenDialog;
Button2: TButton;
BitBtn1: TBitBtn;
Button3: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form2: TForm2;
implementation
{$R *.dfm}
procedure TForm2.Button1Click(Sender: TObject);
begin
XMLDocument1.Active := true;
XMLDocument1.FileName:='C:\Users\Admin\Desktop\x\default-capability.xml';
Memo1.Text:=XMLDocument1.xml.Text ;
XMLDocument1.Active := false;
end;
procedure TForm2.Button2Click(Sender: TObject);
begin
Memo1.Lines.SaveToFile('C:\Users\Admin\Desktop\x\def.xml');
end;
procedure TForm2.Button3Click(Sender: TObject);
begin
XMLDocument1.xml.Text:=BoolToStr(FileOpenDialog1.Execute);
Memo1.Text:=XMLDocument1.xml.Text;
end;
END.к сообщению добавил архив с проектом программы..работаю в delphi XE... добавляю текст моего XML: Код:
<?xml version="1.0" encoding="UTF-8"?>
<devices>
<version>0.4</version>
<device>
<identification>
<model>G700</model>
<manufacturer>SonyEricsson</manufacturer>
<vendor>Sony Ericsson</vendor>
<brand>Generic</brand>
</identification>
<storage>
<type>MSD</type>
<max-full>100</max-full>
</storage>
<display index="0">
<height unit="pixels">320</height>
<width unit="pixels">240</width>
<colors>262144</colors>
</display>
<image>
<format id="JPEG" preferred="true">
<maxwidth>2592</maxwidth>
<maxheight>1944</maxheight>
<extension>jpg</extension>
<mime-type>image/jpeg</mime-type>
</format>
<format id="BMP" preferred="false">
<extension>bmp</extension>
<mime-type>image/bmp</mime-type>
<mime-type>image/x-bmp</mime-type>
<mime-type>image/x-ms-bmp</mime-type>
</format>
<format id="GIF" preferred="false">
<extension>gif</extension>
<mime-type>image/gif</mime-type>
</format>
<format id="PNG" preferred="false">
<extension>png</extension>
<mime-type>image/png</mime-type>
</format>
<format id="MNG" preferred="false">
<extension>mng</extension>
<mime-type>image/mng</mime-type>
</format>
<format id="SVG" preferred="false">
<extension>svg</extension>
<mime-type>image/svg+xml</mime-type>
</format>
<format id="ICO" preferred="false">
<extension>ico</extension>
<mime-type>image/ico</mime-type>
</format>
<format id="TIFF" preferred="false">
<extension>tif</extension>
<mime-type>image/tiff</mime-type>
</format>
<format id="MBM" preferred="false">
<extension>mbm</extension>
<mime-type>image/x-epoc-mbm</mime-type>
</format>
<format id="WMF" preferred="false">
<extension>wmf</extension>
<extension>apm</extension>
<extension>clp</extension>
<mime-type>image/x-wmf</mime-type>
</format>
<format id="OTA" preferred="false">
<extension>ota</extension>
<extension>otb</extension>
<mime-type>image/x-ota-bitmap</mime-type>
<mime-type>image/vnd.nokia.ota-bitmap</mime-type>
</format>
<format id="WBMP" preferred="false">
<extension>wbmp</extension>
<mime-type>image/vnd.wap.wbmp</mime-type>
</format>
</image>
<audio>
<format id="Windows Media" preferred="false">
<extension>wma</extension>
<extension>asf</extension>
<mime-type>audio/wma</mime-type>
<mime-type>audio/x-ms-wma</mime-type>
<mime-type>audio/x-ms-asf</mime-type>
</format>
<format id="MP4" preferred="false">
<extension>mp4</extension>
<mime-type>audio/mp4</mime-type>
<mime-type>audio/mp4-latm</mime-type>
<mime-type>audio/mpeg4</mime-type>
</format>
<format id="m4a" preferred="false">
<extension>m4a</extension>
<mime-type>audio/mp4</mime-type>
<mime-type>audio/mpeg4</mime-type>
</format>
<format id="3GPP" preferred="false">
<extension>3gp</extension>
<extension>3ga</extension>
<mime-type>audio/3gpp</mime-type>
</format>
<format id="AAC" preferred="false">
<extension>aac</extension>
<mime-type>audio/aac</mime-type>
<mime-type>audio/x-aac</mime-type>
<mime-type>audio/x-pv-aac</mime-type>
</format>
<format id="MP3" preferred="true">
<extension>mp3</extension>
<extension>mpg</extension>
<extension>mpeg</extension>
<mime-type>audio/mpeg</mime-type>
<mime-type>audio/x-mpeg</mime-type>
<mime-type>audio/mp3</mime-type>
<mime-type>audio/mpeg3</mime-type>
<mime-type>audio/mpg</mime-type>
<mime-type>audio/x-mp3</mime-type>
</format>
<format id="Real8 audio" preferred="false">
<extension>ra</extension>
<mime-type>audio/x-pn-realaudio</mime-type>
<mime-type>audio/vnd.rn-realaudio</mime-type>
<mime-type>audio/vnd.m-realaudio</mime-type>
</format>
<format id="AMR" preferred="false">
<extension>amr</extension>
<mime-type>audio/amr</mime-type>
<mime-type>audio/x-amr</mime-type>
</format>
<format id="RMF" preferred="false">
<extension>rmf</extension>
<mime-type>audio/rmf</mime-type>
<mime-type>audio/x-rmf</mime-type>
<mime-type>audio/x-beatnik-rmf</mime-type>
</format>
<format id="XMF" preferred="false">
<extension>xmf</extension>
<mime-type>audio/xmf</mime-type>
<mime-type>audio/xmf0</mime-type>
<mime-type>audio/xmf1</mime-type>
<mime-type>audio/mobile-xmf</mime-type>
</format>
<format id="MIDI" preferred="false">
<extension>mid</extension>
<extension>midi</extension>
<extension>imy</extension>
<mime-type>audio/mid</mime-type>
<mime-type>audio/midi</mime-type>
<mime-type>audio/x-mid</mime-type>
<mime-type>audio/x-midi</mime-type>
<mime-type>audio/sp-midi</mime-type>
<mime-type>audio/imelody</mime-type>
<mime-type>audio/x-imelody</mime-type>
<mime-type>audio/x-nokia-rng</mime-type>
<mime-type>audio/vnd.semc.melody</mime-type>
</format>
<format id="SMAF" preferred="false">
<extension>mmf</extension>
<mime-type>application/vnd.smaf</mime-type>
<mime-type>application/vnd.x-smaf</mime-type>
<mime-type>audio/smaf</mime-type>
</format>
<format id="AU" preferred="false">
<extension>au</extension>
<mime-type>audio/basic</mime-type>
<mime-type>audio/x-basic</mime-type>
<mime-type>audio/au</mime-type>
<mime-type>audio/x-au</mime-type>
</format>
<format id="WAV" preferred="false">
<extension>wav</extension>
<mime-type>audio/wav</mime-type>
<mime-type>audio/x-wav</mime-type>
</format>
</audio>
<video>
<format id="MPEG4" preferred="true">
<extension>mp4</extension>
<mime-type>video/mpeg4</mime-type>
<mime-type>video/mp4</mime-type>
<mime-type>video/mpeg</mime-type>
<mime-type>application/mpeg4</mime-type>
<encoding>mpeg-4</encoding>
<sound>AAC</sound>
<kbits>96</kbits>
</format>
<format id="ASF" preferred="false">
<extension>wmv</extension>
<mime-type>video/wmv</mime-type>
<mime-type>video/x-ms-wmv</mime-type>
<mime-type>video/x-ms-asf</mime-type>
</format>
<format id="3GPP" preferred="false">
<extension>3gp</extension>
<mime-type>video/3gp</mime-type>
<mime-type>video/3gpp</mime-type>
<encoding>h264</encoding>
<part>10</part>
<profile>0</profile>
<sound>AAC</sound>
<kbits>96</kbits>
</format>
<format id="Real Video" preferred="false">
<extension>rm</extension>
<mime-type>application/x-pn-realmedia</mime-type>
<mime-type>application/vnd.rn-realmedia</mime-type>
<mime-type>video/3gpp</mime-type>
</format>
</video>
<filesystem>
<filename maxlength="256" />
<folder maxlength="256" />
<path>
<camera>\DCIM\</camera>
<image>\Picture\</image>
<video>\Video\</video>
<sound>\Music\</sound>
<feedsound>\music\podcasts\</feedsound>
<feedvideo>\video\podcasts\</feedvideo>
<feedimage>\picture\podcasts\</feedimage>
<feeds>\other\podcasts\</feeds>
</path>
</filesystem>
<drm>
<oma-v1>true</oma-v1>
</drm>
<store name="Media Store" url="www.sonyericsson.com/mediastore">
<launchstoreexternally>true</launchstoreexternally>
</store>
</device>
</devices>Надеюсь на любую вашу помощь... |
|
#2
|
|||
|
|||
|
1. Для подсветки синтаксиса скачай и поставть компонент(ы) SynEdit. Это самое простое решение.
2. Для выбра файла для чтения/сохранения есть такие компоненты TOpenDialog/TSaveDialog. Пример использования см. в справке. 3. Редактировать xml как текст конечно приколько, но лучше в добавок к этому иметь редактор в виде дерева. |
| Этот пользователь сказал Спасибо lmikle за это полезное сообщение: | ||
Jaroslav285 (29.03.2012)
| ||
|
#3
|
|||
|
|||
|
PHP код:
|
| Этот пользователь сказал Спасибо Pyro за это полезное сообщение: | ||
Jaroslav285 (29.03.2012)
| ||
|
#4
|
||||
|
||||
|
можно сделать что-то навроде Mitec XML Viewer (не сочтите за рекламу
). но это только просмотрщик. мультидокументный. виды: дерево, текст, браузер. |
| Этот пользователь сказал Спасибо NumLock за это полезное сообщение: | ||
Jaroslav285 (29.03.2012)
| ||
|
#5
|
|||
|
|||
|
уважаемый lmikle,можете подсказать где можно найти SynEdit для Delphi XE 2010?
и если можно покажите пример использования TOpenDialog на моем коде,чтобы содержимое файла читалось в Memo1. Последний раз редактировалось Jaroslav285, 28.03.2012 в 12:52. |
|
#6
|
|||
|
|||
|
Цитата:
если можно,покажите наглядно как ето можно сделать,на сколько я понял ето осуществляется с помощью компонента TTreeView либо IwTreeView. |
|
#7
|
|||
|
|||
|
у меня есть shelltreeview на вкладке samples
|
| Этот пользователь сказал Спасибо Pyro за это полезное сообщение: | ||
Jaroslav285 (29.03.2012)
| ||
|
#8
|
|||
|
|||
|
Цитата:
|
|
#9
|
|||
|
|||
|
Цитата:
Пример: Код:
procedure TForm2.Button1Click(Sender: TObject);
begin
If OpenDialog1.Execute Then
Begin
XMLDocument1.Active := true;
XMLDocument1.FileName := OpenDialog1.FileName;
Memo1.Text:=XMLDocument1.xml.Text ;
XMLDocument1.Active := false;
End;
end;SynEdit здесь: http://sourceforge.net/apps/mediawik...Edit_Home_Page Он в сырцах, так что должно и так все встать. |
| Этот пользователь сказал Спасибо lmikle за это полезное сообщение: | ||
Jaroslav285 (29.03.2012)
| ||
|
#10
|
|||
|
|||
|
Цитата:
Спасибо,все получается,подсветка работает,есть пара вопросов:почему файл через диалог FileDialog открывается только с второго раза и для SaveDialog вообще не сохраняет,я думаю что надо как то описать тип файлов или что-то еще,но не знаю как ето сделать... прилагаю Код: Код:
procedure TForm2.Button2Click(Sender: TObject);
begin
If SaveDialog1.Execute Then
Begin
XMLDocument1.Active := true;
XMLDocument1.FileName := SaveDialog1.FileName;
SynMemo1.Text:=XMLDocument1.xml.Text ;
XMLDocument1.Active := false;
End;
end;
procedure TForm2.Button3Click(Sender: TObject);
begin
If OpenDialog1.Execute Then
Begin
XMLDocument1.Active := true;
XMLDocument1.FileName := OpenDialog1.FileName;
SynMemo1.Text:=XMLDocument1.xml.Text ;
XMLDocument1.Active := false;
End;
end; |
|
#11
|
|||
|
|||
|
А вам не кажется, что для сохранения код надо писать немного другой? Компоненты диалогов обеспечивают ТОЛЬКО выбор имени файла. Для сохранения надо сделать обратную операцию чтению.
Тип файла описывается в свойствах диалога - Filter и DefaultExtention (кажется так). |
| Этот пользователь сказал Спасибо lmikle за это полезное сообщение: | ||
Jaroslav285 (29.03.2012)
| ||
|
#12
|
|||
|
|||
|
Цитата:
Спасибо,буду пытатся сделать что-то подобное. Последний раз редактировалось Jaroslav285, 29.03.2012 в 01:56. |
|
#13
|
|||
|
|||
|
Можете подсказать как сделать древовидную структкуру XML файла какой компонент нужно для етого?
я пробовал ShellTreeView,он мне выдает при помещении на форму древовидную структуру файлов проводника. Либо обьясните что нужно сделать чтобы он читал структуру файла пожалуйста. Извините что задаю очень много вопросов. |
|
#14
|
|||
|
|||
|
Просто TreeView.
При этом в самом TreeView выводишь теги целиком, а рядом брось какой-нить property editor, в котором можно редактировать все свойства тега. |
|
#15
|
|||
|
|||
|
Цитата:
Извините,а можно какой-то пример? Я нашел что-то похожее до того что вы написали,но не то: http://parsing-and-i.blogspot.com/20...ew-delphi.html я так понял вы имели в виду что можно сделать переход по тегам из TreeView в Memo. |