Poradna - Nacitani dat z xml
hlavní kategorie | zpět | + odpovědět na toto témaNacitani dat z xml - diskuze na toto téma |
Mam soubor xml se strukturou viz nize a potreboval bych z nej nacist hodnoty. Delam to pomoci jednoduche procedury, ale nemuzu prijit na to jak nacist jednotlive hodnoty.
Dim objDom As Object
Dim xPath As String
Set objDom = CreateObject("Msxml2.DOMDocument.3.0")
objDom.Load ("C:\ut.xml")
Dim xPath As String
xPath = "/tab/odd"
import = objDom.SelectSingleNode(xPath).Text
Forum odstranilo konce radku takze je to neprehledne, prikladam prilohu Odpověď Ukážte na Exceláckej prílohe, ako má vyzerať výsledok takého načítania dát z tohoto súboru. Odpověď Treba z radku v prilozenem xml souboru "< Unit Specification="scaleB">456 Unit>" potrebuju po zadani uzlu do parametru funkce kterou pisu dostat to cislo 456. Odpověď A ako chcete rozoznať < Unit Specification="scaleB"> v uzle Odpověď Kdyz tam zadam stromovy seznam tech uzlu v xml, tak se mi vzdy vrati jen prvni nalezena hodnota, dalsi radky se mi nijak nedari nacist. Odpověď Ale to čo uvádzate, Vám nevráti nič. Tento Váš úryvok kódu nevráti ani ten Vami spomínaný 1 prvok. Odpověď Ale to čo uvádzate, Vám nevráti nič. Tento Váš úryvok kódu nevráti ani ten Vami spomínaný 1 prvok. Odpověď Jeste bych chtel dodat, ze s VBA prakticky nepracuju, znam jen nejake zaklady, tak prosim betre na to ohled :-) Odpověď Je potrebná príloha. Reálny XML súbor. A XLSM súbor, kde máte doterajšiu procedúru. Plus je treba aj v liste ukázať, tuto zadávam takýto parameter (parametre),a tuto chcem mať takýto výsledok. A to založené na tom skutočnom súbore XML. Tento Váš "XML" súbor mi nechce zožrať ani MSXML2.DOMDocument, ani MSXML2.DOMDocument60, ani Msxml2.DOMDocument.3.0, a nefičí mi na tom takmer nič (getElementsByTagName, getElementsByClassName, getElementById), dokonca mi nedá ani Children. :( Odpověď Omlouvam se, ja jsem rano omylem zkopcil cast chybneho souboru.
V priloze je funkcni kde uz dana procedura funguje a zobrazuje najednou vsechny udaje ktere potrebuju z xml dostat, ale jednotlive a adresne.
Ja to momentalne pouzivam v accessu, ale bude se to delat i v excelu, na kod by to nemelo mit vliv. Vstup parametru funkce atd. si osetrim pozdeji, pro zjednoduseni jsem uvadel jen tu cast ktera mi dela problem, tj. nacitani z xml. Vystup jde na zkousku do tetxtoveho pole ve formulari ktere se jmenuje "import". Odpověď Pro poradek tady je jeste ta procedura, v te puvodni jsem mel 2x definovanovanou stejnou promennou. Odpověď Napadá ma zatiaľ iba prehľadať kolekciu vyselektovaných elementov, a zistiť nadradený Nod a názov špecifikácie. To je to, čo som sa od Vás nedozvedel, ako chcete identifikovať presnú hodnotu, keď sú ešte aj inak vnorené. Pridal som aj inú verziu pre prípad, keď budete chcieť načítať z XML viac hodnôt. Pretože čítať veľa krát z rovnakého súboru je neefektívne. Preto sa vytvorí ľahko kľúčom prehľadateľná kolekcia týchto elementov. Odpověď Ahoj, dik za priklad. Musim to prozkoumat Vas pristup, VBA se zabyvam tak 14dnu, takze to jde ztuha :-) Byl jsem pres vikend na chate mimo signal a podarilo se mi sesmolit to co je v priloze. Zda se ze to funguje, jen je problem ze to vyhodi chybu kdyz dany uzel neexistuje. Ty xml soubory vytvari vyrobni stroj a jsou pokazde jine a obcas dost chaoticky usporadane. Odpověď Takouto maskou som to chcel riešiť na začiatku, a keďže sa mi nepodarilo takú masku spáchať, tak som spravil prvé čo ma napadlo, prehľadať kolekciu. Píšete "chaotické". No a preto som sa na začiatku pýtal, ako viete identifikovať jednoznačne (jedinečný identifikátor) požadovanú hodnotu, keď sa volajú rovnako. V prípade masky, potrebujete vedieť presný strom uzlov. V prípade prehľadania kolekcie len priameho rodiča. Ale to iba za predpokladu, že ten priamy rodič je v celom súbore jedinečný. Toto je špecifická vec, ktorú nikto okrem Vás nevie, čo tie súbory znamenajú, ako sa tvoria, čo môže a nemôže nastať (duplicita rodiča?), a aké presne hodnoty budete potrebovať, či koľko úrovní sa treba vnárať pre požadovanú infošku... Inak odchytenie chyby je jednoduché. Odpověď Dik moc za info. Duplicitni tam muze muze byt v podstate vsechno, jedinecna je jen kombinace uzlu a jejich atributu nebo jak se to spravne nazyva a podle toho najdu hodnotu. Mam jeste maly problem se syntaxi VBA. Vic jsem to popsal v prilozenem souboru. Snad bude pochopitelne co chci docilit.
Odpověď Ak chcete predať prvok tak predefinujte iba parameter funkcie: Function Zkontroluj(ByRef Pole As Control) As String. Ak chcete volať funkciu bez návratu tak Zkontroluj delka, a ak s návratom tak Zkontroluj (delka). Odpověď Ja bych potreboval vyuzit obe varianty, v tomto pripade na zaklade hodnoty pole zmenit barvu jeho pozadi. Odpověď Naozaj neviem, čo potrebujete urobiť, a ako to chcete použiť. Dotazoval som prílohu, no nie TXT, ale Excelácky súbor. Nech si nemusím všetko vytvárať a skúšať sám. Dotazoval som aj to, koľko takých hodnôt budete načítavať. Ak 1000, tak to nemôžete robiť po jednom, treba pozerať aj na rýchlosť. Dotazoval som sa aj na to, je jedinečný identifikátor spojenie priamonadriadeného uzla s názvom atribútu. Lebo vy v tom SingleNode hľadáte presnú štruktúru nadnodov a podnodov až po ten, ktorý chcete. Ale sám píšete, že neviete, kde sa bude v ktorom uzle nachádzať. Čo s Vami? :):) Odpověď Este ma dnes napadla jedna možnosť, úplne primitívne rozdelenie raťazca a tak získanie hodnoty (metódy Unit_Split a xml_load3) Odpověď Oprava, ešte jedno Split tam musí byť, aby nebralo hodnotu z nasledujúceho uzla: Unit_Split = Split(Split(Split(Split(WorksheetFunction.Trim(input$(LOF(F), #F)), "=""" & sParent & """>" & vbNewLine & " Šmarjáá toto je tupý server ... takže prikladám normálnu prílohu. Odpověď Dik moc za rady, vse uz funguje jak ma. VBA je mnohem rozsahlejsi nastroj nez jsem si puvodne myslel, mel jsem za to ze je to jen nejake udelatko na makra. Momentalne programuju neco v jakemsi podivnem jazyku ktery si vymyslel vyrobce grafickych chipu pro dotykove displeje a tak se mi trochu mota i syntaxe. V kazdem pripade jeste jednou dekuji za cenne rady a az otevrou hospody dam si panaka na vase zdravi :-) Odpověď To by som terazky fakt potreboval, bo zdravie mám zrovna dosť podlomené. Tak budem na Vás spoliehať :) :) Odpověď Dobry den. Chcel by som sa opytat ci je mozne spravit nieco take ako posielam v prilohe. (v jednom priecinku mam 2 xml.. moze ich byt aj 10) a potreboval by som nacitat udaje z kazde XML pekne za sebou - tak ako to je vv "vys.xlsm". V kazdom riadku potrebujem aj udaj "gpc" aby som neskor vedel priradit riadok k spravnemu suboru. Odpověď |