Strona 1 z 2

tworzenie listy obiektów z klastra

: 11 lut 2014 14:36
autor: kicaj
Witam,

może ktoś doradzi w sprawie zagwozdki...

mam klaster o budowie zdefiniowanej zgodnie z konkretnym typem dokumentu XML. każdy element tego klastra ma określoną nazwe zgodnie z nazwami elementow w XML. Chciałbym teraz wyciągnąć z tego klastra nazwy tych obiektów łącznie z hierarchią i utworzyć obiekt tak by mozna było poprzez property node zmieniać wartość tylko poszczególnego elementu a nie za każdym razem całość unbundle...
jest to o tyle wazne że w przyszłości przy zmianie struktury nie trzeba będzie znow poprawiać wszystkich programów...
jak się do tego zabrać?

Oryginalna funkcja text<-->xml w LV nie jest niestety pomocna.

dzięki za wszelkie sugestie...

tworzenie listy obiektów z klastra

: 11 lut 2014 15:01
autor: SNT
Witaj.
Ja to widzę tak: tworzysz referencję do klastra, następnie przez property node (Allobjects[]) sprawdzasz w pętli for class name i do odpowiedniej użyj to more specific class, następnie sprawdzasz label lub caption (zależy co ustawiłeś) i wyciągasz to co Cię interesuje.
Opis może być trochę niejasny więc za chwilę dorzucę przykład.

Re: tworzenie listy obiektów z klastra

: 11 lut 2014 16:23
autor: kicaj
OK, dzieki. jutro już na spokojnie zaglądnę i się odezwę... próbowałem z opisu ale coś chyba pomieszałem i nie chciało wyjść ;)

Re: tworzenie listy obiektów z klastra

: 11 lut 2014 17:02
autor: PiDi
Możesz jakiś przykład takiego klastra i xml-a zamieścić? I pokazać dokładnie, co chciałbyś z tym zrobić?

tworzenie listy obiektów z klastra

: 11 lut 2014 19:49
autor: kicaj
W załącznikach oba pliki

z jednej strony chciałbym by można było wyciagnąć poszczególne nazwy i strukturę z drugiej utworzyć obiekt albo metodę do wprowadzania/zmiany poszczególnych elementów

***
OK, ciąg dalszy zabawy. Poprzez property node, podobnie jak SNT pokazał (dzięki) wyciagam nazwę obiektu w klastrze, ale oprócz boolean i cluster. Przy boolean nie ma błedu ale zamiast nazwy z label.text dostaje tylko Boolean a w przypadku klastra mam błąd podczas użycia "to more specific class". Może to ktos wytłumaczyć?

Re: tworzenie listy obiektów z klastra

: 13 lut 2014 18:39
autor: PiDi
z jednej strony chciałbym by można było wyciagnąć poszczególne nazwy i strukturę z drugiej utworzyć obiekt albo metodę do wprowadzania/zmiany poszczególnych elementów
Nadal do końca nie rozumiem: skąd chcesz wyciągać nazwy i strukturę - z xml czy z klastra? Gdzie chcesz wprowadzać zmiany? Kiedy te zmiany chcesz wprowadzać - w działającym programie?
Przy boolean nie ma błedu ale zamiast nazwy z label.text dostaje tylko Boolean a w przypadku klastra mam błąd podczas użycia "to more specific class". Może to ktos wytłumaczyć?
Pewnie może wytłumaczyć, jak kod pokażesz :D

tworzenie listy obiektów z klastra

: 13 lut 2014 22:08
autor: kicaj
ok, odezwę się jak będę miał coś do pokazania ;)
prosze o cierpliwość...

Re: tworzenie listy obiektów z klastra

: 24 lut 2014 15:46
autor: kicaj
Dzięki waszej pomocy juz potrafię wyciągnąć nazwy z elementów klastra. natomiast problem pozostaje gdy jednym z elementów klastra jest inny klaster. Próbuję to zapętlić, jak w załączonym pliku ale niestety LabView nie pozwala na wywołanie tej samej funkcji z funkcji... Odpowiedź jest w ustawieniach pamięci do wywolania...
VI properties/execution/ shared clone reentrant execution

a czy mozna to inaczej rozwiązać?
próbowalem event'ami ale nie poszło...

Re: tworzenie listy obiektów z klastra

: 24 lut 2014 19:05
autor: PiDi
To ja konsekwentnie będę się pytał o to, co Ty w ogóle chcesz osiągnąć. Bo cały czas mam wrażenie, że wszystko co się tu dzieje prowadzi w jakiś okropnie skomplikowany sposób do efektu, który można osiągnąć podstawowymi funkcjami ;)

Jeśli chcesz wywoływać funkcję rekursywnie, to trzeba ją ustawić na shared clone reentrant. Nie ma innego wyjścia. Co mają eventy do tego?

ed. I jeszcze jedno pytanie - dlaczego nie po prostu Flatten To XML?

Re: tworzenie listy obiektów z klastra

: 25 lut 2014 08:37
autor: kicaj
dlaczego nie flatten to xml? bo nie podoba mi się to jaki jkest format dokumentu XML póżniej. A format pliku, co prawda zgodny ze standardem XMl, ale specyficzny...
Dlatego sie pytam czy nie można tego w jakiś prostszy sposób zrobić, a potrzebuję w takiej postaci, by w przypadku zmiany formatu, np. poprzez dodanie dodatkowych parametrów, móc automatycznie uwzględnić ją w programie...
Idea jest taka: plik ze zdefiniowaną strukturą XML + lista wszystkich parametrów, która służy jako baza nazw parametrów, łącznie ze strukturą, wykorzystywana później w innych programach jako źródło

Re: tworzenie listy obiektów z klastra

: 25 lut 2014 15:14
autor: TMa
A próbowałeś palety XML Parser? Udostępnia takie cuda jak "Get All Matched Nodes.vi" szukająca po XPath czy invoke node Get Elements by Tag Name. Przydają się jak chcesz w całej strukturze XML znaleźć konkretny element.

Re: tworzenie listy obiektów z klastra

: 25 lut 2014 21:47
autor: PiDi
kicaj pisze:dlaczego nie flatten to xml? bo nie podoba mi się to jaki jkest format dokumentu XML póżniej. A format pliku, co prawda zgodny ze standardem XMl, ale specyficzny...
Co w tym formacie jest nie tak, co to znaczy "specyficzny"? Co Ci się nie podoba?
kicaj pisze: Dlatego sie pytam czy nie można tego w jakiś prostszy sposób zrobić, a potrzebuję w takiej postaci, by w przypadku zmiany formatu, np. poprzez dodanie dodatkowych parametrów, móc automatycznie uwzględnić ją w programie...
Masz na razie skomplikowaną nie do końca działającą własną implementację (patrzę na ostatni twój załącznik). Odrzucasz wykorzystanie jednego, powszechnie dostępnego bloczka w LabVIEW. Po czym pytasz, czy da się prościej? ;)
kicaj pisze: Idea jest taka: plik ze zdefiniowaną strukturą XML + lista wszystkich parametrów, która służy jako baza nazw parametrów, łącznie ze strukturą, wykorzystywana później w innych programach jako źródło
O ile się nie mylę, to do definiowania struktury XML służy XML Schema. Można taki dokument chyba dopiąć w labwjowym parserze, o którym mówi TMa. To a propos tej listy/bazy parametrów.
A w samym temacie: pokaż mi jeden rysunek/fragment kodu obrazujący, co chcesz osiągnąć. Cały czas nie widzę twojego celu. Nie rozumiem, co to znaczy, że ten XML ma służyć jako "źródło" (źródło czego?) w "innych" (innych niż?) programach.



Sorry, jakoś tak się uwziąłem od początku i będę nachalnie prowadził dochodzenie w tym wątku :D

Re: tworzenie listy obiektów z klastra

: 26 lut 2014 08:42
autor: kicaj
Poprawcie mnie jeśli się myle...
TMa pisze:A próbowałeś palety XML Parser?
Taki mam zamiar, ale do tego potrzeba już plik ze strukturą XML, jak się mi wydaje.
Idea taka - najpierw definiuję strukturę pliku, z parametrami, tworze plik, który potem w zalezności od potrzeb otwieram i zapisuje/odczytuję odpowiednie parametry/dane
PiDi pisze:Co w tym formacie jest nie tak, co to znaczy "specyficzny"? Co Ci się nie podoba?
a widziałeś jaka jest struktura pliku XML tworzonego przez LabView? http://thinkinging.com/2008/01/21/using ... w-is-hard/ i wszystko jasne ;)
PiDi pisze:Masz na razie skomplikowaną nie do końca działającą własną implementację (patrzę na ostatni twój załącznik). Odrzucasz wykorzystanie jednego, powszechnie dostępnego bloczka w LabVIEW. Po czym pytasz, czy da się prościej?
możesz to rozwinąć?
PiDi pisze:O ile się nie mylę, to do definiowania struktury XML służy XML Schema. Można taki dokument chyba dopiąć w labwjowym parserze, o którym mówi TMa. To a propos tej listy/bazy parametrów.
A w samym temacie: pokaż mi jeden rysunek/fragment kodu obrazujący, co chcesz osiągnąć. Cały czas nie widzę twojego celu. Nie rozumiem, co to znaczy, że ten XML ma służyć jako "źródło" (źródło czego?) w "innych" (innych niż?) programach.
zgadza się, ale jak pisałem wczesniej - nie podoba mi się format LabView, chcę stworzyć własny który będę mógł potem na własny uzytek modyfikować, chcę sie czegoś więcej nauczyć w LabView ;) ...

XML file structure.vi tam masz strukturę pliku w postaci klastra, z tego klastra chcę wyciągnąć nazwy poszczególnych elementów... to pierwszy problem
nadal nie rozumiem dlaczego boolen jest traktowany jako obiekt złożony, tak samo jak cluster. Może to ktoś wyjaśnić?

Re: tworzenie listy obiektów z klastra

: 09 maja 2014 16:12
autor: kicaj
wracam do problemu.
kwestie tworzenia struktury rozwiązana - program, tak jak opisałem tworzy strukturę pliku XML zgodnie ze standardem http://www.panalytical.com/XRDMLInforma ... 201.5.html oraz tworzy plik XML (załącznik) w oparciu o mój zdefiniowany cluster.
niestety nie mogę z takiego pliku wyciągnąć poszczególne pozycje (nodes) tak by móc operować (czytac, zapisać) funkcjami oferowanymi w LabView - XML Parser.
Pytanie - czy to związane jest ze specjalną strukturą pliku czy może coś źle robię. Zwykła próba otwarcia pliku i odczytanie wszystkich nodes (get all matched nodes.vi) zwraca pustą listę... Tak samo read From XML File.vi zwraca pusty string.
Czy da się jakoś "dopasować" istniejące funkcje do mojegio pliku? Czy muszę wszystko od początku sam programować?
dzieki za każdą sugestię, uwagę...

Re: tworzenie listy obiektów z klastra

: 11 maja 2014 10:31
autor: PiDi
kicaj pisze: niestety nie mogę z takiego pliku wyciągnąć poszczególne pozycje (nodes) tak by móc operować (czytac, zapisać) funkcjami oferowanymi w LabView - XML Parser. Pytanie - czy to związane jest ze specjalną strukturą pliku czy może coś źle robię. Zwykła próba otwarcia pliku i odczytanie wszystkich nodes (get all matched nodes.vi) zwraca pustą listę...
Plik jest prawidłowo sformatowany. Otwiera się przez wbudowany parser prawidłowo, można się też po nim bez problemu poruszać (czy to przez prop i inv node-y, czy to przez zapytania XPath). Get All Matched Nodes.vi zwraca węzły zgodnie z zapytaniem, które do niego podepniesz. Jeśli podepniesz pusty string, to pytasz o nic - stąd nic dziwnego, że zwraca pustą tablicę. Prawidłowe zapytanie o absolutnie wszystko w dokumencie to: /descendant::*. Polecam doczytać dokumentację.
kicaj pisze: Tak samo read From XML File.vi zwraca pusty string.
Ta funkcja służy do odczytu XML zapisanego zgodnie ze schematem LabVIEW. Twój plik nic z tym schematem wspólnego nie ma ;)