wstern111
Goto Top

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.

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

Content-Key: 551217

Url: https://administrator.de/contentid/551217

Ausgedruckt am: 19.03.2024 um 07:03 Uhr

Mitglied: 143127
Lösung 143127 23.02.2020 aktualisiert um 15:36:44 Uhr
Goto Top
Hier kannste es für Beispiel 1 abschauen
https://tio.run/##5ZRdj5NAFIbv@RUTUgNclCmsq@umXwQmu0QKBGjjagyhMNoa2kGYur ...
Beispiel 2 kannst du damit dann selbst umsetzen.
Mitglied: wstern111
wstern111 23.02.2020 aktualisiert um 22:28:04 Uhr
Goto Top
Hallo vibrations,

Danke für die schnelle Antwort, das einzige ist aber dabei, das ich ca. 40 Dateien / Files habe die täglich eingelesen und entsprechend verarbeitet werden müssen, das sollte Beispiel 1 und 2 sein, so in etwa sehen die Inhalte der Files aus, welche dann abgearbeitet werden müssen.

Grüße wstern111
Mitglied: 143127
143127 23.02.2020 aktualisiert um 23:08:35 Uhr
Goto Top
Na und.und wo ist jetzt das Problem? Dafür gibt's doch die schönen foreach Schleifen.