![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Считывание значений из xml
smart © (2011-03-04 07:20:00)Доброе утро. Как считывать данные из xml? XML у меня такой
<?xml version="1.0" encoding="windows-1251" ?>
- <polkin>
- <info>
<api_version>1.0</api_version>
<time>10:00:32</time>
<execution_time>0.0178761482239</execution_time>
</info>
- <result value="0">
<id>20041</id>
</result>
</polkin>
Теперь, как взять из xml, допустим цифру 20041, и отобразить его?
Пробовал так, не получилось
ShowMessage(VarToStr(Form1.XMLDocument1.DocumentElement.ChildNodes['id'].T ext));
Плохиш (2011-03-04 14:02:00) [1]
> sniknik © (04.03.11 13:36) [19]
Да ладно тебе, там надо начинать сForm1.
sniknik (2011-03-04 13:36:00) [2]> А ответ получился такой:
ShowMessage(VarToStr(Form1.XMLDocument1.DocumentElement. ChildNodes[1].ChildNodes['id'].text));
вот откуда у нас проблемы с агентами типа, "у нас все сломалось потому что вы поменяли формат xml", а положение нода вообще то не регламентируется.
равнозначно -
<?xml version="1.0" encoding="windows-1251" ?>
- <polkin>
- <result value="0">
<id>20041</id>
</result>
- <info>
<api_version>1.0</api_version>
<time>10:00:32</time>
<execution_time>0.0178761482239</execution_time>
</info>
</polkin>
smart (2011-03-04 13:22:00) [3]Получилось. Всем спасибо за помощь и за внимание. А ответ получился такой:
ShowMessage(VarToStr(Form1.XMLDocument1.DocumentElement.ChildNodes[1].Chil dNodes['id'].text));
Всем Удачи и Респект за советы )))
clickmaker (2011-03-04 13:01:00) [4]http://www.google.ru/search?hl=ru&newwindow=1&biw=1437&bih=769&q=%D0%BA%D0%B0%D0%BA+%D0%B2%D0%B7%D1%8F%D1%82%D1%8C+%D0%B8%D0%B7+xml%2C+%D0%B4%D0%BE%D0%BF%D1%83%D1%81%D1%82%D0%B8%D0%BC+%D1%86%D0%B8%D1%84%D1%80%D1%83+20041&aq=f&aqi=&aql=&oq=
целых 3 сцылки )
Плохиш (2011-03-04 13:00:00) [5]
> RWolf © (04.03.11 12:53) [15]
Там конкретно его пример не рассматривается.
RWolf (2011-03-04 12:53:00) [6]
> Я уже прогуглил на эту тему
не верю.
гугль по запросу Delphi XML выдаёт море ссылок.
в первой же ссылке есть всё, что нужно:
http://www.codenet.ru/progr/delphi/stat/Using-XML/
sniknik (2011-03-04 12:37:00) [7]> Кому-то это дело пяти минут.
чтобы стало делом пяти минут на обучение любому делу нужно потратить не один день...
ты либо учишься, либо "халявиш" за счет других... с соответствующим к себе от этого отношением.
Медвежонок ХМЛ (2011-03-04 12:32:00) [8]у меня есть.
вот тебе пример.
showmessage(x.selectsinglenode('/*[1]').nodeText);
smart (2011-03-04 11:58:00) [9]Я уже прогуглил на эту тему, прочитал "кусок из справки". Кому-то это дело пяти минут. Я просто хотел посмотреть пример, если у кого то она есть...
(2011-03-04 11:53:00) [10]Удалено модератором
Плохиш (2011-03-04 11:52:00) [11]
> поэтому хочется узнать поподробнее
И что ты уже сделал для узнавания? Или думаешь, что сейчас кто-то броситься тебе основы разжёвывать, описанные во всех книжках?
Требуемый кусок из справки я тебе дал, узнавай.
smart (2011-03-04 11:48:00) [12]Не судите так строго. вопрос не в уникальности. Для профи такие вопросы могут казаться глупым, но я просто новичок и в дельфи и в xml. поэтому хочется узнать поподробнее
Плохиш (2011-03-04 11:45:00) [13]
> smart (04.03.11 11:17) [5]
>
> И как это будет выглядеть на моем примере?
Чем твой пример так уникален?
Медвежонок ХМЛ (2011-03-04 11:37:00) [14]showmessage(x.selectsinglenode('......./id').nodeText);
Плохиш (2011-03-04 11:36:00) [15]
> smart (04.03.11 11:16) [4]
>
> А можно попроще и поподробней объяснить?
Nachdem ein XML-Dokument von einer DOM-Implementierung ausgewertet wurde, stehen die von ihm repräsentierten Daten als Hierarchie von Knoten zur Verfügung. Jeder Knoten entspricht einem Tag-Element im Dokument. Als Ausgangspunkt diene das folgende XML-Beispiel:
Borland
15.375
BORL
100
Pfizer
42.75
PFE
25
TXMLDocument würde die Hierarchie der Knoten folgendermaßen generieren: Der Stamm der Hierarchie ist der Knoten StockHoldings. StockHoldings verfügt über zwei untergeordnete Knoten, die den beiden Stock-Tags entsprechen. Jeder dieser beiden untergeordneten Knoten verfügt über vier eigene untergeordnete Knoten (name, price, symbol und shares). Diese vier Knoten fungieren als Endknoten. Der enthaltene Text erscheint als der Wert der einzelnen Endknoten.
Hinweis
Diese Einteilung in Knoten unterscheidet sich gerinfügig von der Art und Weise, in der eine DOM-Implementierung Knoten für ein XML-Dokument generiert. Insbesondere behandelt ein DOM-Parser alle Tag-Elemente als interne Knoten. Zusätzliche Knoten (vom Typ Textknoten) werden für die Werte aller name-, price-, symbol- und shares- Knoten erstellt. Diese Textknoten erscheinen dann als die untergeordneten Knoten der Knoten name, price, symbol und shares.
Der Zugriff auf einen Knoten erfolgt über eine IXMLNode-Schnittstelle, beginnend mit dem Stammknoten, bei dem es sich um den Wert der Eigenschaft DocumentElement der XML-Dokumentkomponente handelt.
Mit dem Wert eines Knotens arbeiten
Bei einer IXMLNode-Schnittstelle können Sie anhand der Eigenschaft IsTextElement prüfen, ob diese einen internen Knoten oder einen Endknoten repräsentiert.
Falls diese für einen Endknoten steht, können Sie seinen Wert mit der Eigenschaft Text lesen oder setzen.
Falls diese für einen internen Knoten steht, können Sie auf ihre untergeordneten Knoten mit der Eigenschaft ChildNodes zugreifen.
Mit dem weiter oben gezeigten XML-Dokument können Sie beispielsweise den Wert der Borland-Aktie folgendermaßen lesen:
BorlandStock := XMLDocument1.DocumentElement.ChildNodes[0];
Price := BorlandStock.ChildNodes['price'].Text;
smart (2011-03-04 11:17:00) [16]И как это будет выглядеть на моем примере?
smart (2011-03-04 11:16:00) [17]А можно попроще и поподробней объяснить?
clickmaker (2011-03-04 11:10:00) [18]ChildNodes.FindNode рекурсивно.
Либо сымпортить MS XML и юзать DOMDocument с XPath и selectSingleNode()
smart (2011-03-04 10:52:00) [19]А как тогда отобразить этот элемент? помогите плзз
Плохиш (2011-03-04 09:56:00) [20]
> Пробовал так, не получилось
Правильно, ибо нету у рутового элемента подэлемента "id".