Вопрос по XML
Файлик xml с курсами от ЦБРФ выглядит так :
... <Record Date="21.01.2009" Id="R01235"> <Nominal>1</Nominal> <Value>33,4154</Value> </Record> ... Значение поля VALUE беру так : var С = xmldoc.getElementsByTagName('Value').item(4); var Cc =(course1.firstChild.data); Как вытащить значение даты 21.01.2009 ? |
getAttribute()
|
Спасибо !
|
Еще вопрос, как можно вытщащить значение из тега <Value> зная значение атрибута Id в теге <Record> ?
P.S. Просто из XML ЦБРФ можно тянуть валюту по номеру тега, структура файла неменяется. А файл Банка Украины постоянно меняется, надо тянуть по коду валюты. |
xmldoc.getElementById("R01235").getElementsByTagName("Value").item(0).data ? |
Спасибо, сажусь писать код :)
|
Еще вопрос, структура файла вот такая:
<item> <date>2008-12-19</date> <code>036</code> <char3>AUD</char3> <size>100</size> <name>австралийских доларов</name> <rate>555.3728</rate> <change>15.1841</change> </item> <item> ... </item> Как вытащить значение тега <rate> зная значение <char3> ? (Кол-во тегов <item> в файле множество, соответственно и искать надо по всему файлу.) Или можно наверное проще, подскажите просто как определить номер тега <char3> в файле зная его значение ? Дальше все будет понятно. |
а интересно, XPath в каком-либо виде поддерживается где-то еще, кроме Gecko?
|
Цитата:
ЗЫ У IE, конечно свой путь :) |
все что можно сделать с XPath, можно и без него.
это всего шиш оченб удобная и краткая абстракция. хотя для меня по работе очень нужная ))) по моему в jQuery есть возможность делать выборки через XPath. но кажется только для страницы если вы готовы ради этой возможности подключить его, то дерзайте. попробуйте на сервере ПЫХом сделать.думаю удобней будет. ЗЫ а как вы работаете с чужим XML-ем?скачиваете предварительно?или как? |
Товарищи, я совсем запутался. Про XPath почитал на предложенном сайте, но все равно не очень понял как осуществить задуманное.
XML тащу в сафари вот так : var URL = "http://bank-ua.com/export/currrate.xml" + "?" + Math.random(); XML = false; XML = new XMLHttpRequest(); XML.overrideMimeType('text/xml'); XML.open('GET', URL, true); XML.send(null); Кто-нибудь все-таки может написать строчечку кода как определить номер тега в файле зная его значение ? |
Цитата:
Елки... Цитата:
|
Цитата:
2. Работает. Можете проверить например : http://bank-ua.com/export/currrate.xml?0.1313131313 |
Цитата:
У вас ваш код работает? var URL = "http://bank-ua.com/export/currrate.xml" + "?" + Math.random(); XML = false; XML = new XMLHttpRequest(); XML.overrideMimeType('text/xml'); XML.open('GET', URL, true); XML.send(null); Ошибки, типа "Доступ запрещен" не выскакивает? |
Работает, только в Сафари, в мозиле и в IE не пашет. Но так как этот код для айфона, меня устраивает. А что не должно работать или ошибка где вкралась ?
|
Цитата:
Цитата:
|
Сафари видимо игнорирует эти ограничения. Я этим методом без проблем тяну данные с различных ресурсов и никаких проблем не возникает.
Тут лежит моя небольшая разработка под IPhone, ее можно запустить в Сафари и убедиться, что все работает без проблем. Спасибо за ссылку, почитаю. И все-таки, не поможете мне с моим вопросом ? |
помоему такую задачу надо решать серверным путем. XPath+php например.
Вы тогда сможете по крону запускать скрипты, которые будут получать xml файлы с другого(других) сайтов и всегда иметь свежий курс валют. |
Похоже меня не слышат, и тема ушла совсем в другое русло ...
У меня нет проблемы с доставанием XML и с получением свежего курса. Вот мой рабочий код, который работает безо всяких проблем : <head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1251"/> </head> <body onload="test();"> <script> function test(){ var URL = "http://bank-ua.com/export/currrate.xml" + "?" + Math.random(); XML = false; XML = new XMLHttpRequest(); XML.overrideMimeType('text/xml'); XML.open('GET', URL, true); XML.send(null); XML.onload= function() { if (XML.readyState == 4) { if (XML.status == 200) { var xmldoc = XML.responseXML; var V1 = "AUD" if (V1=="AUD"){tag1 = 0;} var course1 = xmldoc.getElementsByTagName('rate').item(tag1).firstChild.data; alert(course1); }}}} </script> </body> Но меня перестал устраивать такой способ определения курса, потому, что сегодня валюта AUD находится в item[0], а завтра может оказаться в item[1] например. Поэтому возник вопрос как в моей ситуации определить значение одного одного тега, зная значение другово. |
Дык, вам ответили XPath,вам дали ссылку, читайте...
Вам не создать объект? var evaluator = new XPathEvaluator(); вам не создать Xpath - выражение? Код:
'/chapter/item/rate[preceding-sibling::char3="AUD"]' evaluate() Что вам не ясно? Не хотите читать? Так, вам уже писали Цитата:
|
Ну вот именно этой строки я и ждал :
'/chapter/item/rate[preceding-sibling::char3="AUD"]' Спасибо ! Я ведь только учусь, а без примеров совсем трудно получается ... |
Часовой пояс GMT +3, время: 19:13. |