Ini файл або xml

INI файл або XML

Є необхідність зберігати дані. В основному це текстові рядки - вони згруповані в групи і підгрупи.
Хотів використовувати ini. але там немає вкладеності і я не знайшов функції дозволяє відобразити всі наявні групи.
питання:
1. чи є така функція у ini файлів?
2. Чи простіше буде використовувати xml?
3. як працювати з xml (по конкретиці:
3.1 чи потрібні сторонні компоненти?
3.2 як записати наприклад рядок c: \ run.exe, в групу application, в підгрупу video з параметром -mini
3.3. як отримати список груп, а потім по групі список підгруп, а вже по ним список рядків?

я не любитель складнощів і порадив би ini (можна і вкладення зробити), але в даному випадку, xml це воно!
потрібен парсер xml, почитай про структуру зберігання даних в xml.


> 1. чи є така функція у ini файлів?

У ini-файлів є функція ReadString і WriteString. Як ти їх будеш використовувати - справа твоє. При бажанні можна і на ini-файлі ієрархічну структуру створити. Треба тільки трохи подумати. )


> 2. Чи простіше буде використовувати xml?

Напевно простіше. Тільки от якщо ти сам парсер писати не будеш, а будеш використовувати якийсь готовий, то май на увазі, що його може і не виявитися на тій машині, де запускається твоя програма.


> 3. як працювати з xml (по конкретиці:
> 3.1 чи потрібні сторонні компоненти?

При чому тут компоненти.


> 3.2 як записати наприклад рядок c: \ run.exe, в групу application,
> # XA0; в підгрупу video з параметром -mini

Очевидно, додавши вузол з атрибутами в якості дочірнього до вузла Video


> 3.3. як отримати список груп, а потім по групі список
> Підгруп, а вже по ним список рядків?

У загальному випадку - рекурсією. У приватному - можна обійтися без неї.

1.нет
2.проще
3. складне питання
3.1 не потрібні
3.2 можна по всякому
3.3 selectnodes

можна і вкладення зробити

А чи потрібно і заради чого?
Якщо ще врахувати, що однойменні діти можуть бути у абсолютно різних батьків.


> Чи потрібні сторонні компоненти?
Є готовий - TXMLDocument

> Як отримати список груп, а потім по групі список підгруп,
> # XA0; а вже по ним список рядків?
XPath повинен допомогти

> А чи потрібно і заради чого?

за умовою потрібна вкладеність

> Якщо ще врахувати, що однойменні діти можуть бути у зовсім
> Різних батьків.

і що? скільки батьків, стільки дітей! в чому проблемма то?
я сказав що можна, але це трохи складніше ніж xml)


> Але це трохи складніше ніж xml)

Взагалі не складніше.

> Взагалі не складніше.

тут думати треба а в xml готове все)

і що? скільки батьків, стільки дітей! в чому проблемма то?
я сказав що можна, # XA0;)

секція "рушниці" і "гвинтівки" і в обох діти "патрони"
накидай приблизну структуру іні

але це трохи складніше ніж xml

Ось і питається, навіщо тут іні.


> Секція "рушниці" і "гвинтівки" і в обох діти "патрони"
> Накидай приблизну структуру іні
>

А що тут незрозумілого? У рушниць патрони одні, у гвинтівок - інші. Там мисливський, там - унітарний.

ти структуру іні намалюй. і щоб секції Патрони перейменовувати

і де тут секції "рушниці" і "віновкі"?

треба буде взагалі компонентік навоять (c вкладеністю в ini)


> У ini-файлів є функція ReadString і WriteString. як
> Ти їх будеш використовувати - справа твоє. При бажанні можна
> І на ini-файлі ієрархічну структуру створити. треба тільки
> Трохи подумати. )

Так я розумію - просто назва всієї ієрархії ставити буду не я - і знайти їх можна буде - відкривши і знайшовши всі секції (я просто думав є функція - # XA0; самому лінь морочитися :))

> Напевно простіше. Тільки от якщо ти сам парсер писати не
> Будеш, а будеш використовувати якийсь готовий, то май
> На увазі, що його може і не виявитися на тій машині, де запускається
> Твоя програма.

Парсер писати не буду. Наскільки я зрозумів є парсер Microsoft "а. Він є у всіх або його потрібно буде ставити.

> При чому тут компоненти.

ну незнаю - може потрібні :)

> Є готовий - TXMLDocument

А щось на комп'ютері клієнтів ставити потрібно буде?

> І де тут секції "рушниці" і "віновкі"?

хворієш?

А якщо ще й Парент в кожній секції вказувати - зовсім не складно буде.

> А якщо ще й Парент в кожній секції вказувати - зовсім
> Складно буде.

та це все, як 2 байта передати;)

Так пофик що це.
Вкладеність і ієрархія ж реалізовані, значить це повинно бути нескладно.
Або складно?

тим більше, що
та це все, як 2 байта передати;)

1. читаємо все sect
2. читаємо index1 всіх sect.

А для третього рівня ієрархії?

> А для третього рівня ієрархії?

в даному випадку тільки 2 рівня.

[Delphi] procedure ReadSections (Strings: TStrings); overload; override;

Description
Call ReadSections to retrieve the names of all sections in an INI file into a string list object.

Strings specifies the string object to hold the retrieved names. Strings can point to a TStrings object, or to a component property, such as Items for a TListBox component.

в даному випадку тільки 2 рівня.

Це наказ? Або ти хочеш запропонувати мені халтурку?
Якщо ДУЖЕ сильно треба отримання всіх атрибутів одного рівня (хоча я такого завдання ще ніколи не зустрічав) - вводимо поняття Level. А сам файл вантажимо в ієрархічну структуру, з якою працюємо.


> Замість використання xml який і призначений для подібних завдань

XML занадто важкий, перевантажений і надмірний. Я б в сторону більш легких мов розмітки порадив би подивитися, тіпаJSON або YAML. Їх багато, насправді.

Це наказ? Або ти хочеш запропонувати мені халтурку?

Все те ж саме можна і без іні зробити. На простому текстовому файлі.
Воно комусь треба?

XML занадто важкий, перевантажений і надмірний.

Схожі статті