Чтение и запись в файл XML - PullRequest
       32

Чтение и запись в файл XML

1 голос
/ 21 октября 2010

Мне нужно работать с файлами XML, используя Delphi.

Я хочу представить пользователю данные XML в DBGrid и сохранить сделанные пользователем изменения в файле XML.

Например, в приведенном ниже XML (который был представлен пользователю), если пользователь changed City of ABC under client и added a new customer with NickName as "AAA", эти изменения должны быть отражены в файле XML.

<Data LinkID=”0”>
  <Client>
      <Item Name=”ABC” Mobile=”1234” City=”IN” />
      <Item Name=”PQR” Mobile=”5678” City=”IN” />
  </Client>
  <Customer>
    <Item NickName=”XYZ” Phone=”1254” City=”IN” />
    <Item NickName=”MNO” Phone =”41255” City=”IN” />
  </Customer>
</Data>

Я работаю с XMLDocument и ClientDataSet, чтобы добиться этого, но безуспешно.

Может ли кто-нибудь помочь мне в достижении этого?

1 Ответ

4 голосов
/ 22 октября 2010

Проблемы связаны с файлом XML, который я использую.

Файл XML должен быть в указанном формате, который должен иметь теги <METADATA> and <ROWDATA>.

Я изменил xml на этот формат.

<?xml version="1.0" standalone="yes"?>  
<DATAPACKET Version="2.0">
<METADATA>
<FIELDS>
<FIELD attrname="Name" fieldtype="string" WIDTH="50"/>
<FIELD attrname="Mobile" fieldtype="string" WIDTH="20"/>
<FIELD attrname="City" fieldtype="string" WIDTH="20"/>
</FIELDS><PARAMS CHANGE_LOG="6 1 8"/>
</METADATA>
<ROWDATA>
<ROW Name="ABC" Mobile="1234" City="IN"/>
<ROW Name="PQR" Mobile="5678" City="IN"/>
<ROW Name="AAA" Mobile="7894" City="IN"/>
<ROW Name="MNO" Mobile="4569" City="IN"/>
<ROW Name="ABC" Mobile="45685" City="IN"/>
</ROWDATA>
</DATAPACKET>

Далее я использовал ClientDataSet1.LoadFromFile('E:\projects\XML\Sample App with CDS\XmlText.xml'); для чтения файла XML.

После внесения изменений в сетку я использовал ClientDataSet1.SaveToFile('E:\projects\XML\Sample App with CDS\XmlText.xml',dfXML); метод для сохранения обратно в XML.

Для этой цели не требуется XMLDocument.

...