You are not logged in.

  • Login

1

Wednesday, October 14th 2009, 9:33am

xpath suche in Inhalt

guten morgen zusammen,

kann mir jemand erklären wie ich mit xpath ein xml-file nach einer id durchsuche?

bsp.:

XML Code

1
2
3
4
5
<Module_configuration id="id_353_0">
  <Logistic_control_information>/NULL</Logistic_control_information>
  <Configuration_type>option code</Configuration_type>
  <Controlled_components>id_350_1404 id_316_93 id_344_273 id_314_1403 id_344_259 id_314_1404 id_350_1407 id_344_276 id_314_1409 id_344_263 id_314_1410 id_350_1409 id_316_413 id_344_278 id_344_719 id_314_1413 id_344_722 id_344_264 id_314_1414 id_350_1411 id_344_280 id_314_1417 id_344_267 id_314_1418</Controlled_components>
</Module_configuration>


ich möchte nun nach einer bestimmten id in "Controlled_components" suchen.

ich habe das ganze mit

XML Code

1
.../Controlled_components = id_...
versucht... was wohl eher sinnfrei ist.

thx,
truespin

2

Wednesday, October 14th 2009, 9:54am

Moin,
du musst zwischen Element (Module_configuration) und Attribut (id) unterscheiden.
Attribute spricht man in der Kurzform mit @ an.

Lösung:

XML Code

1
Module_configuration[@id="id_353_0"]

3

Wednesday, October 14th 2009, 10:04am

guten morgen,

ich glaub ich hab mich etwas undeutlich ausgedrückt... es geht mir nicht um das attribut id, sondern um den inhalt von "Controlled_components".
soll heißen, ich habe eine id z.b. id_316_93 und muss nun per xpath feststellen ob diese im element "Controlled_components" enthalten ist.

thx,
truespin

4

Wednesday, October 14th 2009, 5:56pm

Ich nehme an, dass XML File ist irgendwo gegeben und darf nicht geändert werden?
Separierte Listen sind wie nicht normalisierte Datenbanken... kein schönes XML.

Nungut.. für Stringoperationen gibt es ein paar XPATH Funktionen, siehe z.B. contains

XML Code

1
//Controlled_components[container(., "id_353_0")]


Damit sollten du die ganzen Controlled_comonents Inhalte erfahren... wenn du aufs Elternelement willst, musst du natürlich noch mit /.. zurücknavigieren.

5

Thursday, October 15th 2009, 7:44am

hallo,

das ist mir durchaus bewusst... finde es auch nicht schön, sondern vorallem verwirrend und einfach nur chaos!
aber da kann ich nix für und auch die firma kann da nix für... das ganze ist ne "standart" der deuschen automobilhersteller.
kannst ja mal nen verbesserungsvorschlag machen ;)

danke für die hilfe! werde ich sofort ausprobieren!

thx, truespin

6

Thursday, October 15th 2009, 8:14am

hallo nochmal,

so funktionierst einigermaßen. ich hab jetzt nur noch das problem, dass ich zu viel finde...
heißt wenn ich die id_350_18 suche finde ich auch die id_350_181 - id_350_189.
kann man das einschränken?? ich will nur nach der übergebenen id suchen und sonst nichts!

thx, truespin

7

Thursday, October 15th 2009, 6:23pm

wie meinst du das?
Du willst nur wissen "ob" und nicht "mit wem"

Mach einfach ein COUNT drum ;)

8

Friday, October 16th 2009, 7:36am

hallo,

das problem hat sich schon erledigt...
hab es jetzt so gelöst, dass ich die suche umgedreht habe! heißt ich hole mir alle id´s in Controlled_components lege sie in einer liste ab.
dazu muss natürlich ne split gemacht werden, da das toll xml file ne bisschen doof aufgebaut ist!
im nächsten schritt vergleiche ich dann mit meiner eigentlichen id...

danke d0nut für deine unterstützung!!!

thx, truespin

Similar threads

Social bookmarks