Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

BK Simon

Treue Seele

  • »BK Simon« ist der Autor dieses Themas

Beiträge: 151

Beruf: Student

  • Private Nachricht senden

1

08.07.2013, 17:07

XML - bestimmte Attribute auslesen und formatiert ausgeben

Hallo liebe Community,

ich stehe zurzeit vor folgender Aufgabe..
Ich habe eine .xml Datei vor mir die sich jede 10 Sekunden upgradet mit neuen Werten.

Meine Aufgabe ist es, bestimmte Attribute aus dieser .xml Datei auszulesen und dann formatiert auf einem Bildschirm auszugeben.
Ich habe mich bis jetzt schon ein wenig im Internet belesen, aber da ich vorher noch nie mit XML zutun hatte, verstehe ich es noch nicht so wirklich gut.
Bis jetzt weiss ich nur, dass man da mit .xsl-Dateien arbeiten kann.

Meine Frage ist, wie man diese Aufgabe am besten loest, dass man diese Datei immer wieder ausliest und schoen auf einem Bildschirm ausgibt.

Im Anhang ein Teil der .xml Datei und ein Foto, wie es ungefaehr aussehen sollte
An der .xml Datei selber kann man nicht viel aendern, da diese von einem externen Programm erzeugt wird, deswegen sind auch viele Attribute dabei, die auf dem Screen nicht gezeigt werden sollen.

Ich bedanke mich jetzt schonmal fuer jede Hilfe :)

Simon

Quellcode

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
34
35
36
37
38
39
40
41
42
43
44
<CMEnterprise snapshotCreated='1/22/2013 2:08:37 PM' snapshotCreatedLong='Tuesday, January 22, 2013 2:08:37 PM'> 
<!-- Queues XML Collection --> 
<QUEUES> 
<QS> 
<QID>1013</QID> 
<QN>General Enquiries</QN> 
<AWT>55</AWT> 
<MAWT>823</MAWT> 
<MIWT>6</MIWT> 
<TT>319</TT> 
<TC>4</TC> 
<TA>64</TA> 
<TR>0</TR> 
<TUA>0</TUA> 
<REJECTED>0</REJECTED> 
<QTP>150</QTP> 
<CWT>92</CWT> 
<TASLA>61.29</TASLA> 
<TCSLA>100.00</TCSLA> 
<TABSLA>0.00</TABSLA> 
<PTC>0</PTC> 
<TAV>80.00</TAV> 
<TAT>30</TAT> 
<TCV>0.00</TCV> 
<TCT>0</TCT> 
<TAAV>0.00</TAAV> 
<TABAV>0.00</TABAV> 
<TCAV>0.00</TCAV> 
<LU>13</LU> 
<LA>0</LA> 
<CLA>0</CLA> 
<PWRK>11</PWRK> 
<CWRK>0</CWRK> 
<QLAP>5</QLAP> 
<TWAP>0</TWAP> 
<QTYPE>MANAGED</QTYPE> 
<EXPERTS> 
<U></U> 
<Q></Q> 
<E></E> 
</EXPERTS> 
</QS> 
</QUEUES> 
</CMEnterprise>
»BK Simon« hat folgendes Bild angehängt:
  • screen.jpg

2

08.07.2013, 17:43

Am besten mit einem internen DOM-Tree.
Die Datei lädst du dann alle 10 Sekunden einfach neu.
An sich sind doch nur zwei Attribute da... Naja, der Rest besteht aus Childs.
Joa und dann mittels Iteratoren schön durch iterieren.
Woher weißt du, welche nicht gezeigt werden sollen?

Die Positionen würde ich dann vom Screen abhängig berechnen. So was wie:
Text.setPosition(Screensize.size/2 - Text.size/2)

Vllt ist meine Methode aber auch zu umständlich.
Darfst du eigentlich ne XML-Libary benutzen oder musst du selbst was basteln? (klingt ja eher nach letzterem)

MfG
Check

xardias

Community-Fossil

Beiträge: 2 731

Wohnort: Santa Clara, CA

Beruf: Software Engineer

  • Private Nachricht senden

3

08.07.2013, 18:14

Wenn es nur darum geht eine Handvoll Werte aus der Datei auszulesen, dann tut's auch eine simple regular expression. z.B. <PTC>([0-9.]+)</PTC> um den PTC wert zu lesen.
Was fuer eine Sprache moechtest du ueberhaupt verwenden?

Tobiking

1x Rätselkönig

  • Private Nachricht senden

4

08.07.2013, 18:45

An der .xml Datei selber kann man nicht viel aendern, da diese von einem externen Programm erzeugt wird, deswegen sind auch viele Attribute dabei, die auf dem Screen nicht gezeigt werden sollen.

Könnte man dem denn eine Zeile an Text hinzufügen? Dann wäre es nämlich wirklich eine Option einfach XSLT zu verwenden und das File direkt im Browser anzeigen (und per Javascript aktualisieren) zu lassen.

BK Simon

Treue Seele

  • »BK Simon« ist der Autor dieses Themas

Beiträge: 151

Beruf: Student

  • Private Nachricht senden

5

08.07.2013, 18:57

@Tobiking:
Ja, genau daran habe ich auch gedacht. Ich weiß leider erst morgen, ob ich diese eine Zeile hinzufügen kann oder nicht.
Kannst du mir vllt. nen kleines Codebeispiel geben, wie ich das mit XSLT mache. Habe damit heute schon rummexperimentiert, aber ich zurzeit das Problem, dass die .xml Datei wesentlich länger ist und die ganzen Child öfters mit dem gleichen Namen vorkommen und wenn ich nun z.B. QN ausgeben möchte, alles ausgegeben wird mit dem Namen QN und nicht nur, wie oben im Code das "General Enquiries".

Das Refresehen der Datei habe ich bis jetzt so realisiert, dass ich einfach nen Meta Tag in den Head schreibe, der nach 5 Sekunden immer eine Seite aufruft, in dem Fall einfach immer die Selbe.

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

6

08.07.2013, 20:22

Wenn du nicht viel Code schreiben möchtest, dann mach es mit XPath. Da gibst du sozusagen nur den Pfad zu den Informationen an und der Rest wird dir abgenommen. Nichts mit viel selbst parsen und so.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

Tobiking

1x Rätselkönig

  • Private Nachricht senden

7

08.07.2013, 20:57


Kannst du mir vllt. nen kleines Codebeispiel geben, wie ich das mit XSLT mache. Habe damit heute schon rummexperimentiert, aber ich zurzeit das Problem, dass die .xml Datei wesentlich länger ist und die ganzen Child öfters mit dem gleichen Namen vorkommen und wenn ich nun z.B. QN ausgeben möchte, alles ausgegeben wird mit dem Namen QN und nicht nur, wie oben im Code das "General Enquiries".

Es ist leider schon zu lange her das ich damit gearbeitet habe, daher kann ich dir da leider nicht zuverlässig helfen. Aber Schorsch hat dir mit XPath schon den richtigen Begriff genannt. Die match und select Attribute bei XSLT erwarten XPath Ausdrücke, mit denen du auch abhängig von der Hierarchie auf Nodes und Attribute zugreifen kannst.

BK Simon

Treue Seele

  • »BK Simon« ist der Autor dieses Themas

Beiträge: 151

Beruf: Student

  • Private Nachricht senden

8

08.07.2013, 23:44

Ich danke euch für eure Hilfe!

Von diesem XPath habe ich auch schon gelesen, nur habe ich zurzeit noch Probleme mit reinem XML mit XSL das klappt noch überhaupt nicht bei mir, also wäre super, wenn sich noch jemand melden würde, der Ahnung von XML und XSL und am besten sogar XPath hat.

Werbeanzeige