Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2011.06.12;
Скачать: [xml.tar.bz2];

Вниз

Считывание значений из xml   Найти похожие ветки 

 
smart   (2011-03-04 07:20) [0]

Доброе утро. Как считывать данные из 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 09:56) [1]


> Пробовал так, не получилось

Правильно, ибо нету у рутового элемента подэлемента "id".


 
smart   (2011-03-04 10:52) [2]

А как тогда отобразить этот элемент? помогите плзз


 
clickmaker ©   (2011-03-04 11:10) [3]

ChildNodes.FindNode рекурсивно.
Либо сымпортить MS XML и юзать DOMDocument с XPath и selectSingleNode()


 
smart   (2011-03-04 11:16) [4]

А можно попроще и поподробней объяснить?


 
smart   (2011-03-04 11:17) [5]

И как это будет выглядеть на моем примере?


 
Плохиш ©   (2011-03-04 11:36) [6]


> smart   (04.03.11 11:16) [4]
>
> А можно попроще и поподробней объяснить?


Nachdem ein XML-Dokument von einer DOM-Implementierung ausgewertet wurde, stehen die von ihm repr&#228;sentierten Daten als Hierarchie von Knoten zur Verf&#252;gung. Jeder Knoten entspricht einem Tag-Element im Dokument. Als Ausgangspunkt diene das folgende XML-Beispiel:

<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<!DOCTYPE StockHoldings SYSTEM "sth.dtd">
<StockHoldings>
     <Stock exchange="NASDAQ">
           <name>Borland</name>
           <price>15.375</price>
           <symbol>BORL</symbol>
           <shares>100</shares>
     </Stock>
     <Stock exchange="NYSE">
           <name>Pfizer</name>
           <price>42.75</price>
           <symbol>PFE</symbol>
           <shares type="preferred">25</shares>

     </Stock>
</StockHoldings>

TXMLDocument w&#252;rde die Hierarchie der Knoten folgenderma&#223;en generieren: Der Stamm der Hierarchie ist der Knoten StockHoldings. StockHoldings verf&#252;gt &#252;ber zwei untergeordnete Knoten, die den beiden Stock-Tags entsprechen. Jeder dieser beiden untergeordneten Knoten verf&#252;gt &#252;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&#252;gig von der Art und Weise, in der eine DOM-Implementierung Knoten f&#252;r ein XML-Dokument generiert. Insbesondere behandelt ein DOM-Parser alle Tag-Elemente als interne Knoten. Zus&#228;tzliche Knoten (vom Typ Textknoten) werden f&#252;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 &#252;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&#246;nnen Sie anhand der Eigenschaft IsTextElement pr&#252;fen, ob diese einen internen Knoten oder einen Endknoten repr&#228;sentiert.

Falls diese f&#252;r einen Endknoten steht, k&#246;nnen Sie seinen Wert mit der Eigenschaft Text lesen oder setzen.
Falls diese f&#252;r einen internen Knoten steht, k&#246;nnen Sie auf ihre untergeordneten Knoten mit der Eigenschaft ChildNodes zugreifen.

Mit dem weiter oben gezeigten XML-Dokument k&#246;nnen Sie beispielsweise den Wert der Borland-Aktie folgenderma&#223;en lesen:

BorlandStock := XMLDocument1.DocumentElement.ChildNodes[0];
Price := BorlandStock.ChildNodes["price"].Text;


 
Медвежонок ХМЛ ©   (2011-03-04 11:37) [7]

showmessage(x.selectsinglenode("......./id").nodeText);


 
Плохиш ©   (2011-03-04 11:45) [8]


> smart   (04.03.11 11:17) [5]
>
> И как это будет выглядеть на моем примере?

Чем твой пример так уникален?


 
smart   (2011-03-04 11:48) [9]

Не судите так строго. вопрос не в уникальности. Для профи такие вопросы могут казаться глупым, но я просто новичок и в дельфи и в xml. поэтому хочется узнать поподробнее


 
Плохиш ©   (2011-03-04 11:52) [10]


> поэтому хочется узнать поподробнее

И что ты уже сделал для узнавания? Или думаешь, что сейчас кто-то броситься тебе основы разжёвывать, описанные во всех книжках?
Требуемый кусок из справки я тебе дал, узнавай.


 
имя   (2011-03-04 11:53) [11]

Удалено модератором


 
smart   (2011-03-04 11:58) [12]

Я уже прогуглил на эту тему, прочитал "кусок из справки". Кому-то это дело пяти минут. Я просто хотел посмотреть пример, если у кого то она есть...


 
Медвежонок ХМЛ ©   (2011-03-04 12:32) [13]

у меня есть.
вот тебе пример.
showmessage(x.selectsinglenode("/*[1]").nodeText);


 
sniknik ©   (2011-03-04 12:37) [14]

> Кому-то это дело пяти минут.
чтобы стало делом пяти минут на обучение любому делу нужно потратить не один день...

ты либо учишься, либо "халявиш" за счет других... с соответствующим к себе от этого отношением.


 
RWolf ©   (2011-03-04 12:53) [15]


> Я уже прогуглил на эту тему


не верю.
гугль по запросу Delphi XML выдаёт море ссылок.
в первой же ссылке есть всё, что нужно:
http://www.codenet.ru/progr/delphi/stat/Using-XML/


 
Плохиш ©   (2011-03-04 13:00) [16]


> RWolf ©   (04.03.11 12:53) [15]

Там конкретно его пример не рассматривается.


 
clickmaker ©   (2011-03-04 13:01) [17]

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 сцылки )


 
smart   (2011-03-04 13:22) [18]

Получилось. Всем спасибо за помощь и за внимание. А ответ получился такой:
ShowMessage(VarToStr(Form1.XMLDocument1.DocumentElement.ChildNodes[1].Chil dNodes["id"].text));
Всем Удачи и Респект за советы )))


 
sniknik ©   (2011-03-04 13:36) [19]

> А ответ получился такой:
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>


 
Плохиш ©   (2011-03-04 14:02) [20]


> sniknik ©   (04.03.11 13:36) [19]

Да ладно тебе, там надо начинать с Form1.



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2011.06.12;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.5 MB
Время: 0.004 c
2-1299749151
laby
2011-03-10 12:25
2011.06.12
TcxGrid - автоскрол к первой записи


6-1237807196
FireMan_Alexey
2009-03-23 14:19
2011.06.12
Вопрос по НТТР


2-1299248506
я_только_учусь
2011-03-04 17:21
2011.06.12
Возможно ли выполнить SQL запрос для двух различных DataSource?


6-1237876024
Alex_C
2009-03-24 09:27
2011.06.12
ClientSocket + TThread = ошибка при завершении программы


15-1298291318
Baks
2011-02-21 15:28
2011.06.12
Уникальный идентификтор компьютера





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский