Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2011.06.12;
Скачать: CL | DM;

Вниз

Считывание значений из 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;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.007 c
6-1237876024
Alex_C
2009-03-24 09:27
2011.06.12
ClientSocket + TThread = ошибка при завершении программы


15-1298472861
dlp65
2011-02-23 17:54
2011.06.12
Контрольные суммы


15-1298368780
Andy BitOff
2011-02-22 12:59
2011.06.12
Как грамотно сохранить документацию?


15-1298136845
alexdn
2011-02-19 20:34
2011.06.12
О супермаркетах


2-1295616326
Pcrepair
2011-01-21 16:25
2011.06.12
Использование компенента Indy IdTCPServer в зависимости от версии