|
|
|
Как из "сложного" XML получить DataSet?
|
|||
|---|---|---|---|
|
#18+
Есть XML-файл, сведения о погоде ------------- начало файла <?xml version="1.0" ?> - <MMWEATHER> - <REPORT type="frc3"> - <TOWN index="27612" sname="%CC%EE%F1%EA%E2%E0" latitude="56" longitude="38"> - <FORECAST day="27" month="2" year="2007" hour="15" tod="2" predict="18" weekday="3"> <PHENOMENA cloudiness="3" precipitation="10" rpower="0" spower="0" /> <PRESSURE max="750" min="748" /> <TEMPERATURE max="-7" min="-9" /> <WIND min="5" max="9" direction="4" /> <RELWET max="95" min="90" /> <HEAT min="-14" max="-12" /> </FORECAST> - <FORECAST day="27" month="2" year="2007" hour="21" tod="3" predict="24" weekday="3"> <PHENOMENA cloudiness="3" precipitation="10" rpower="0" spower="0" /> <PRESSURE max="747" min="745" /> <TEMPERATURE max="-8" min="-10" /> <WIND min="5" max="9" direction="4" /> <RELWET max="97" min="92" /> <HEAT min="-15" max="-13" /> </FORECAST> - <FORECAST day="28" month="2" year="2007" hour="3" tod="0" predict="30" weekday="4"> <PHENOMENA cloudiness="3" precipitation="10" rpower="0" spower="0" /> <PRESSURE max="746" min="744" /> <TEMPERATURE max="-9" min="-11" /> <WIND min="5" max="9" direction="4" /> <RELWET max="97" min="92" /> <HEAT min="-16" max="-14" /> </FORECAST> - <FORECAST day="28" month="2" year="2007" hour="9" tod="1" predict="36" weekday="4"> <PHENOMENA cloudiness="3" precipitation="6" rpower="0" spower="0" /> <PRESSURE max="745" min="743" /> <TEMPERATURE max="-9" min="-11" /> <WIND min="5" max="9" direction="4" /> <RELWET max="97" min="92" /> <HEAT min="-16" max="-14" /> </FORECAST> </TOWN> </REPORT> </MMWEATHER> ------------- конец файла Возможно ли из него получить DataSet? В примерах везде дается обработка "правильного" XML-файла (т.е. состоящего только из элементов). А в данном случае в элементах присутствуют атрибуты! Обработка таким образом: oXMLadapter2 = NEWOBJECT('XMLAdapter') oXMLAdapter2.XMLSchemaLocation='e:\pogoda.xsd' oXMLAdapter2.LoadXML('e:\pogoda.xml',.F.,.T.) lcAlias = oXMLAdapter2.Tables.Item(1).Alias oXMLAdapter2.Tables.Item(1).ToCursor() SELECT(lcAlias) BROWSE на команде LoadXML(...) выдает ошибку: XML Error: XML Parse error: Invalid at the top level of the document. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2007, 12:11 |
|
||
|
Как из "сложного" XML получить DataSet?
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2007, 12:54 |
|
||
|
Как из "сложного" XML получить DataSet?
|
|||
|---|---|---|---|
|
#18+
спасибо за ссылку, эту статью я уже читал... в ней описывается обработка "привильного" XML-файла, т.е. используя только элементы ... <PhoneNumbers> <HomePhone>808 579-8342</HomePhone> <WorkPhone>808 579-8342</WorkPhone> <Fax>808 801-1231</Fax> <ServiceStarted>1900-01-01T00:00:00.0000000-10:00</ServiceStarted> </PhoneNumbers> ... в моем же случае элементы с атрибутами ... <FORECAST day="27" month="2" year="2007" hour="15" tod="2" predict="18" weekday="3"> <PHENOMENA cloudiness="3" precipitation="10" rpower="0" spower="0" /> <PRESSURE max="750" min="748" /> <TEMPERATURE max="-7" min="-9" /> <WIND min="5" max="9" direction="4" /> <RELWET max="95" min="90" /> <HEAT min="-14" max="-12" /> </FORECAST> ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2007, 13:11 |
|
||
|
Как из "сложного" XML получить DataSet?
|
|||
|---|---|---|---|
|
#18+
AlexanderVMспасибо за ссылку, эту статью я уже читал... Видимо не очень внимательно. Там дан пример разбора с помощью MSXML2.DomDocument который понимает Attribut-centric формт XML... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2007, 13:18 |
|
||
|
Как из "сложного" XML получить DataSet?
|
|||
|---|---|---|---|
|
#18+
Вот пример от Rick Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2007, 13:32 |
|
||
|
Как из "сложного" XML получить DataSet?
|
|||
|---|---|---|---|
|
#18+
Сергей, это все для "правильных" XML. Вот если бы у меня был xml следующей структуры: ... <FORECAST> <day>27</day> <month>2</month> <year>2007</year> <hour>21</hour> <tod>3</tod> <predict>24</predict> <weekday>3</weekday> </FORECAST> ... тогда бы, думаю, и проблем бы не было, но у меня то структура следующая: <FORECAST day="27" month="2" year="2007" hour="15" tod="2" predict="18" weekday="3"> </FORECAST> так что обработка при помощи MSXML2.DomDocument и XMLAdapter у меня не получается... ничего не подгружается через комманду ... loXML.loadxml(lcXML) ... может есть какой-нибудь другой способ обработки таких "неправильных" xml? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2007, 14:59 |
|
||
|
Как из "сложного" XML получить DataSet?
|
|||
|---|---|---|---|
|
#18+
AlexanderVMСергей, это все для "правильных" XML. Вот если бы у меня был xml следующей структуры: ... <FORECAST> <day>27</day> <month>2</month> <year>2007</year> <hour>21</hour> <tod>3</tod> <predict>24</predict> <weekday>3</weekday> </FORECAST> ... тогда бы, думаю, и проблем бы не было, но у меня то структура следующая: <FORECAST day="27" month="2" year="2007" hour="15" tod="2" predict="18" weekday="3"> </FORECAST> так что обработка при помощи MSXML2.DomDocument и XMLAdapter у меня не получается... ничего не подгружается через комманду ... loXML.loadxml(lcXML) ... может есть какой-нибудь другой способ обработки таких "неправильных" xml? То, что Вы указали и в первом, и во втором случае - абсолютно правильные XML. Только в первом случае XML реализован через "дерево" подчиненных узлов (Nodes), а во втором случае - через атрибуты одного узла. Поэтому надо использовать: MSDN Help getAttribute Method [This is preliminary documentation and subject to change.] Gets the value of the named attribute. Syntax objValue = oXMLDOMElement.getAttribute(name) Parameters name String specifying the name of the attribute to return. Returns Variant. Returns a string that contains the attribute value, or returns the empty string if the named attribute does not have a specified or default value. Remarks Another way to retrieve attributes is to use the XMLDOMNamedNodeMap object's getNamedItem method. Applies To XMLDOMElement ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2007, 15:21 |
|
||
|
Как из "сложного" XML получить DataSet?
|
|||
|---|---|---|---|
|
#18+
Но, по-моему, в FoxPro нет возможности создать объект XMLDOMElement. Или я не прав? При загрузке xml-файла любым из 3-х способов ... loXML = CREATEOBJECT("XMLAdapter") loXML.LoadXML(lcXML) ... или ... loXML = CREATEOBJECT("MSXML2.DomDocument") loXML.LoadXMl(lcXML) ... или ... loXML = CREATEOBJECT("MSXML2.DOMDocument.4.0") loXML.loadxml(lcXML) ... в loXML ничего не попадает, чтобы начать обработку... и соответственно loXML .DocumentElement ничего не возвращает. Следовательно, нужен, наверное, какой-то другой способ загрузки xml-файла в объект. Если есть какие-нибудь предположения, можно предоставить в виде небольшого примера, оригинал xml-файла есть в начале темы... Но, только чтобы это работало в FoxPro. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2007, 16:19 |
|
||
|
Как из "сложного" XML получить DataSet?
|
|||
|---|---|---|---|
|
#18+
AlexanderVMНо, по-моему, в FoxPro нет возможности создать объект XMLDOMElement. Или я не прав? При загрузке xml-файла любым из 3-х способов ... loXML = CREATEOBJECT("XMLAdapter") loXML.LoadXML(lcXML) ... или ... loXML = CREATEOBJECT("MSXML2.DomDocument") loXML.LoadXMl(lcXML) ... или ... loXML = CREATEOBJECT("MSXML2.DOMDocument.4.0") loXML.loadxml(lcXML) ... в loXML ничего не попадает, чтобы начать обработку... и соответственно loXML .DocumentElement ничего не возвращает. Следовательно, нужен, наверное, какой-то другой способ загрузки xml-файла в объект. Если есть какие-нибудь предположения, можно предоставить в виде небольшого примера, оригинал xml-файла есть в начале темы... Но, только чтобы это работало в FoxPro. Ну и лентяй Вы, батенька... Вот держите... Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. P.S. У меня VFP 6.0 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2007, 17:11 |
|
||
|
Как из "сложного" XML получить DataSet?
|
|||
|---|---|---|---|
|
#18+
Станислав, большое спасибо за пример!!! Не в лентяйстве дело, а скорее всего в непонимании еще обработки XML-файлов. Только начинаю этим заниматься.... Спасибо еще раз!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2007, 18:12 |
|
||
|
Как из "сложного" XML получить DataSet?
|
|||
|---|---|---|---|
|
#18+
Вообще полезно изучить что такое xsl-трансформация. Тогда все станет очень просто. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2007, 22:53 |
|
||
|
|

start [/forum/topic.php?fid=41&msg=34357326&tid=1588276]: |
0ms |
get settings: |
10ms |
get forum list: |
20ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
59ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
65ms |
get tp. blocked users: |
1ms |
| others: | 199ms |
| total: | 376ms |

| 0 / 0 |
