XML File in eine Text Datei mit bestimmten Werten konvertieren, exportieren
Hallo zusammen,
Ich sitze hier vor einem Problem, ich habe hier ein XML File (in 2 verschiedenen Variationen, mit dem gleichen Namen, siehe Beilpiele) welche ich in ein Text-File überführen möchte, allerdings dürfen nicht alle Felder und Targets übernommen werden, sondern nur eine Auswahl daraus, welche dann noch ergänzt werden müssen.
Und ich benötige als Ausgabe für Beispiel 1 folgenden String:
PROD1_xyz1 =(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = xyz1.prod.locl)(Port = 1521))(CONNECT_DATA = (SERVER = DEDICATED)(SID = PROD1)(UR = A)))
PROD2_xyz1 =(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = xyz1.prod.locl)(Port = 1521))(CONNECT_DATA = (SERVER = DEDICATED)(SID = PROD2)(UR = A)))
Und für das Beispiel 2 folgenden String:
KALKP_XYZSCAN1_KALKP2 =(DESCRIPTION = (ADDRESS = (Protocol = TCP)(HOST = xyz2-vip.prod.local)(Port = 1521))(CONNECT_DATA = (SERVER = DEDICATED)(SID = KALKP)))
KKIP_XYZSCAN1_KKIP2 =(DESCRIPTION = (ADDRESS = (Protocol = TCP)(HOST = xyz2-vip.prod.local)(Port = 1521))(CONNECT_DATA = (SERVER = DEDICATED)(SID = KKIP)))
Wer kann mir hier weiterhelfen?
Hierbei ist es noch wichtig, das nur die Targets ausgewertet / ausgelesen werden, welche im Targetbereich von "oracle_database" beinhalten, eine Besonderheit ist, wenn der Target-Eintrag "rac_database" vorkommt, muss bei dem String im letzetn Bereich "(SID = )" der letzte Wert entfernt werden. Aus <Property NAME="SID" VALUE="KKIP2"/> muss dann im String (SID = KKIP) werden.
Viele Grüße und Danke für eure Hilfe
wstern111
Ich sitze hier vor einem Problem, ich habe hier ein XML File (in 2 verschiedenen Variationen, mit dem gleichen Namen, siehe Beilpiele) welche ich in ein Text-File überführen möchte, allerdings dürfen nicht alle Felder und Targets übernommen werden, sondern nur eine Auswahl daraus, welche dann noch ergänzt werden müssen.
Beispile 1:
<Targets AGENT_TOKEN="1234567890">
<Target TYPE="host" NAME="xyz1.prod.locl" DISPLAY_NAME="xyz1.prod.locl" EMD_URL="https://xyz1.prod.locl:1830/emd/main/" TIMEZONE_REGION=""/>
<Target TYPE="oracle_emd" NAME="xyz1.prod.locl:1830" DISPLAY_NAME="xyz1.prod.locl:1830" EMD_URL="https://xyz1.prod.locl:1830/emd/main/" TIMEZONE_REGION=""/>
<Target TYPE="oracle_database" NAME="PROD1_xyz1" DISPLAY_NAME="PROD1_xyz1" EMD_URL="https://xyz1.prod.locl:1830/emd/main/" TIMEZONE_REGION="">
<Property NAME="OracleHome" VALUE="/u01/app/oracle/product/12.1.0.2/dbhome_PROD1"/>
<Property NAME="MachineName" VALUE="xyz1.prod.locl"/>
<Property NAME="Port" VALUE="1521"/>
<Property NAME="Protocol" VALUE="TCP"/>
<Property NAME="SID" VALUE="PROD1"/>
</Target>
<Target TYPE="oracle_database" NAME="PROD2_xyz1" DISPLAY_NAME="PROD2_xyz1" EMD_URL="https://xyz1.prod.locl:1830/emd/main/" TIMEZONE_REGION="">
<Property NAME="OracleHome" VALUE="/u01/app/oracle/product/12.1.0.2/dbhome_PROD2"/>
<Property NAME="MachineName" VALUE="xyz1.prod.locl"/>
<Property NAME="Port" VALUE="1521"/>
<Property NAME="Protocol" VALUE="TCP"/>
<Property NAME="SID" VALUE="PROD2"/>
</Target>
</Targets>
Beispiel 2:
<Targets AGENT_TOKEN="0987654321">
<Target TYPE="host" NAME="xyz2.prod.local" DISPLAY_NAME="xyz2.prod.local" EMD_URL="https://xyz2.prod.local:1830/emd/main/" TIMEZONE_REGION=""/>
<Target TYPE="oracle_emd" NAME="xyz2.prod.local:1830" DISPLAY_NAME="xyz2.prod.local:1830" EMD_URL="https://xyz2.prod.local:1830/emd/main/" TIMEZONE_REGION=""/>
<Target TYPE="oracle_database" NAME="KALKP_XYZSCAN1_KALKP2" DISPLAY_NAME="KALKP_XYZSCAN1_KALKP2" EMD_URL="https://xyz2.prod.local:1830/emd/main/" TIMEZONE_REGION="">
<Property NAME="OracleHome" VALUE="/u01/app/oracle/product/12.1.0/rdbms_KALKP"/>
<Property NAME="MachineName" VALUE="xyz2-vip.prod.local"/>
<Property NAME="Port" VALUE="1521"/>
<Property NAME="Protocol" VALUE="TCP"/>
<Property NAME="SID" VALUE="KALKP2"/>
<CompositeMembership>
<MemberOf TYPE="rac_database" NAME="KALKP_XYZSCAN1"/>
</CompositeMembership>
</Target>
<Target TYPE="rac_database" NAME="KALKP_XYZSCAN1" DISPLAY_NAME="KALKP_XYZSCAN1" EMD_URL="https://xyz2.prod.local:1830/emd/main/" TIMEZONE_REGION="">
<Property NAME="ClusterName" VALUE="XYZSCAN1"/>
<Property NAME="ServiceName" VALUE="KALKP_XYZSCAN1"/>
<AssocTargetInstance ASSOCIATION_NAME="rac_instance" SOURCE_TARGET_NAME="KALKP_XYZSCAN1" SOURCE_TARGET_TYPE="rac_database" ASSOC_TARGET_NAME="KALKP_XYZSCAN1_KALKP2" ASSOC_TARGET_TYPE="oracle_database"/>
<CompositeMembership>
<Member TYPE="oracle_database" NAME="KALKP_XYZSCAN1_KALKP2"/>
</CompositeMembership>
</Target>
<Target TYPE="oracle_database" NAME="KKIP_XYZSCAN1_KKIP2" DISPLAY_NAME="KKIP_XYZSCAN1_KKIP2" EMD_URL="https://xyz2.prod.local:1830/emd/main/" TIMEZONE_REGION="">
<Property NAME="Protocol" VALUE="TCP"/>
<Property NAME="Port" VALUE="1521"/>
<Property NAME="MachineName" VALUE="xyz2-vip.prod.local"/>
<Property NAME="OracleHome" VALUE="/u01/app/oracle/product/12.1.0/rdbms_KKIP"/>
<Property NAME="SID" VALUE="KKIP2"/>
<CompositeMembership>
<MemberOf TYPE="rac_database" NAME="KKIP_XYZSCAN1"/>
</CompositeMembership>
</Target>
<Target TYPE="rac_database" NAME="KKIP_XYZSCAN1" DISPLAY_NAME="KKIP_XYZSCAN1" EMD_URL="https://xyz2.prod.local:1830/emd/main/" TIMEZONE_REGION="">
<Property NAME="ServiceName" VALUE="KKIP_XYZSCAN1"/>
<Property NAME="ClusterName" VALUE="XYZSCAN1"/>
<AssocTargetInstance ASSOCIATION_NAME="rac_instance" SOURCE_TARGET_NAME="KKIP_XYZSCAN1" SOURCE_TARGET_TYPE="rac_database" ASSOC_TARGET_NAME="KKIP_XYZSCAN1_KKIP2" ASSOC_TARGET_TYPE="oracle_database"/>
<CompositeMembership>
<Member TYPE="oracle_database" NAME="KKIP_XYZSCAN1_KKIP2"/>
</CompositeMembership>
</Target>
</Targets>
Und ich benötige als Ausgabe für Beispiel 1 folgenden String:
PROD1_xyz1 =(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = xyz1.prod.locl)(Port = 1521))(CONNECT_DATA = (SERVER = DEDICATED)(SID = PROD1)(UR = A)))
PROD2_xyz1 =(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = xyz1.prod.locl)(Port = 1521))(CONNECT_DATA = (SERVER = DEDICATED)(SID = PROD2)(UR = A)))
Und für das Beispiel 2 folgenden String:
KALKP_XYZSCAN1_KALKP2 =(DESCRIPTION = (ADDRESS = (Protocol = TCP)(HOST = xyz2-vip.prod.local)(Port = 1521))(CONNECT_DATA = (SERVER = DEDICATED)(SID = KALKP)))
KKIP_XYZSCAN1_KKIP2 =(DESCRIPTION = (ADDRESS = (Protocol = TCP)(HOST = xyz2-vip.prod.local)(Port = 1521))(CONNECT_DATA = (SERVER = DEDICATED)(SID = KKIP)))
Wer kann mir hier weiterhelfen?
Hierbei ist es noch wichtig, das nur die Targets ausgewertet / ausgelesen werden, welche im Targetbereich von "oracle_database" beinhalten, eine Besonderheit ist, wenn der Target-Eintrag "rac_database" vorkommt, muss bei dem String im letzetn Bereich "(SID = )" der letzte Wert entfernt werden. Aus <Property NAME="SID" VALUE="KKIP2"/> muss dann im String (SID = KKIP) werden.
Viele Grüße und Danke für eure Hilfe
wstern111
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 551217
Url: https://administrator.de/forum/xml-file-in-eine-text-datei-mit-bestimmten-werten-konvertieren-exportieren-551217.html
Ausgedruckt am: 10.05.2025 um 21:05 Uhr
3 Kommentare
Neuester Kommentar

Hier kannste es für Beispiel 1 abschauen
https://tio.run/##5ZRdj5NAFIbv@RUTUgNclCmsq@umXwQmu0QKBGjjagyhMNoa2kGYur ...
Beispiel 2 kannst du damit dann selbst umsetzen.
https://tio.run/##5ZRdj5NAFIbv@RUTUgNclCmsq@umXwQmu0QKBGjjagyhMNoa2kGYur ...
Beispiel 2 kannst du damit dann selbst umsetzen.

Na und.und wo ist jetzt das Problem? Dafür gibt's doch die schönen foreach Schleifen.