tworzenie listy obiektów z klastra
tworzenie listy obiektów z klastra
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...
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...
Robię co lubię, lubię co robię: satysfakcja gwarantowana dla mnie i dla szefa...
tworzenie listy obiektów z klastra
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.
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.
- Załączniki
-
- subVI_get_cluster_ref.vi
- (13.86 KiB) Pobrany 359 razy
-
- MAIN.vi
- (9 KiB) Pobrany 339 razy
-
- kontrloka_przyklad.ctl
- (4.46 KiB) Pobrany 348 razy
Re: tworzenie listy obiektów z klastra
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ść ;)
Robię co lubię, lubię co robię: satysfakcja gwarantowana dla mnie i dla szefa...
-
- Posty: 641
- Rejestracja: 31 gru 2010 01:36
- Wersja środowiska: LabVIEW 2017
- Lokalizacja: Katowice
Re: tworzenie listy obiektów z klastra
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
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ć?
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ć?
- Załączniki
-
- test file-xml.txt
- plik XML (jako tekstowy)
- (7.53 KiB) Pobrany 436 razy
-
- XML file structure_DZ.vi
- klaster (w formie control i indicator)
- (20.99 KiB) Pobrany 342 razy
Robię co lubię, lubię co robię: satysfakcja gwarantowana dla mnie i dla szefa...
-
- Posty: 641
- Rejestracja: 31 gru 2010 01:36
- Wersja środowiska: LabVIEW 2017
- Lokalizacja: Katowice
Re: tworzenie listy obiektów z klastra
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?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
Pewnie może wytłumaczyć, jak kod pokażeszPrzy 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ć?

tworzenie listy obiektów z klastra
ok, odezwę się jak będę miał coś do pokazania ;)
prosze o cierpliwość...
prosze o cierpliwość...
Robię co lubię, lubię co robię: satysfakcja gwarantowana dla mnie i dla szefa...
Re: tworzenie listy obiektów z klastra
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...
VI properties/execution/ shared clone reentrant execution
a czy mozna to inaczej rozwiązać?
próbowalem event'ami ale nie poszło...
- Załączniki
-
- Cluster2list.vi
- (12.64 KiB) Pobrany 340 razy
Robię co lubię, lubię co robię: satysfakcja gwarantowana dla mnie i dla szefa...
-
- Posty: 641
- Rejestracja: 31 gru 2010 01:36
- Wersja środowiska: LabVIEW 2017
- Lokalizacja: Katowice
Re: tworzenie listy obiektów z klastra
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?
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
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
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
Robię co lubię, lubię co robię: satysfakcja gwarantowana dla mnie i dla szefa...
Re: tworzenie listy obiektów z klastra
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.
-
- Posty: 641
- Rejestracja: 31 gru 2010 01:36
- Wersja środowiska: LabVIEW 2017
- Lokalizacja: Katowice
Re: tworzenie listy obiektów z klastra
Co w tym formacie jest nie tak, co to znaczy "specyficzny"? Co Ci się nie podoba?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...
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: 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...
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.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
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

Re: tworzenie listy obiektów z klastra
Poprawcie mnie jeśli się myle...
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
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ć?
Taki mam zamiar, ale do tego potrzeba już plik ze strukturą XML, jak się mi wydaje.TMa pisze:A próbowałeś palety XML Parser?
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
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:Co w tym formacie jest nie tak, co to znaczy "specyficzny"? Co Ci się nie podoba?
możesz to rozwinąć?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?
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 ;) ...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.
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ć?
Robię co lubię, lubię co robię: satysfakcja gwarantowana dla mnie i dla szefa...
Re: tworzenie listy obiektów z klastra
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ę...
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ę...
- Załączniki
-
- 1405090A.xml.txt
- pusty plik XML
- (1.94 KiB) Pobrany 318 razy
Robię co lubię, lubię co robię: satysfakcja gwarantowana dla mnie i dla szefa...
-
- Posty: 641
- Rejestracja: 31 gru 2010 01:36
- Wersja środowiska: LabVIEW 2017
- Lokalizacja: Katowice
Re: tworzenie listy obiektów z klastra
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: 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ę...
Ta funkcja służy do odczytu XML zapisanego zgodnie ze schematem LabVIEW. Twój plik nic z tym schematem wspólnego nie ma ;)kicaj pisze: Tak samo read From XML File.vi zwraca pusty string.