Ich muss eine bestimmte XML-Datei für bestimmte Inhalte analysieren. Leider habe ich nur xmllint OHNE xpath auf meinem System (und ich darf keine anderen Quellen installieren/aktualisieren). Die XML enthalten würden:Parsing xml in bash
<?xml version="1.0"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Body>
<CreateIncidentResponse xmlns="http://schemas.hp.com/SM/7" xmlns:cmn="http://schemas.hp.com/SM/7/Common" xmlns:xmime="http://www.w3.org/2005/05/xmlmime" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" message="Success" returnCode="0" schemaRevisionDate="2016-02-16" schemaRevisionLevel="2" status="SUCCESS" xsi:schemaLocation="http://schemas.hp.com/SM/7 /Incident.xsd">
<model>
<keys>
<IncidentID type="String">IM0832268</IncidentID>
</keys>
<instance recordid="IM0832268 - Paul test 3 incident via soap" uniquequery="number="IM0832268"">
<IncidentID type="String">IM0832268</IncidentID>
<Category type="String">request for change</Category>
<OpenTime type="DateTime">2016-03-18T16:06:28+00:00</OpenTime>
<OpenedBy type="String">Harlass, Alexander</OpenedBy>
<Priority type="String">4</Priority>
<Urgency type="String">medium</Urgency>
<UpdatedTime type="DateTime">2016-03-18T16:06:28+00:00</UpdatedTime>
<AssignmentGroup type="String">TS3-AOS</AssignmentGroup>
<Description type="Array">
<Description type="String">RH test incident description via soap row 1</Description>
<Description type="String">RH test incident description via soap row 2</Description>
</Description>
<Contact type="String">Harlass, Rudolf</Contact>
<Title type="String">Paul test 3 incident via soap</Title>
<TicketOwner type="String">INTEGRATION.OVO</TicketOwner>
<UpdatedBy type="String">INTEGRATION.OVO</UpdatedBy>
<Status type="String">Open</Status>
<Area type="String">it products</Area>
<Subarea type="String">utilization</Subarea>
<ProblemType type="String">request for change</ProblemType>
<Impact type="String">low</Impact>
<Service type="String">PI Automation and Orchestration Service</Service>
<VIP type="Boolean">false</VIP>
<TargetResolutionDate type="DateTime">2016-03-25T15:00:00+00:00</TargetResolutionDate>
<SOD type="String">OML</SOD>
<SourceId type="String">4711</SourceId>
<UserIncident type="Boolean">false</UserIncident>
<AlertId type="String">4712</AlertId>
<MonitoredId type="String">MI4713</MonitoredId>
</instance>
</model>
<messages>
<cmn:message type="String">Audit Record successfully recorded and added.</cmn:message>
</messages>
</CreateIncidentResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
Am Ende würde ich eine Ausgabe wie diese benötigt:
Create SUCCESS
Messages:
Audit Record successfully recorded and added.
Incident ID: IM0832268
Status: Open
Severity: 4
Brief Description: RH test incident description via soap row 1
Opened by: integration.ovo
Opened time: March 20, 2016 11:54:08 PM CET
weiß ich, wie eine Zeichenfolge zu erstellen, die Ausgabe enthält, aber leider bin ich nicht, dass vertraut mit sed oder ähnlichen Werkzeugen.
Jede Hilfe, wie die benötigten Zeichenfolgen aus dem XML extrahiert werden, wäre willkommen.
Vielen Dank im Voraus
Haben Sie [xsltproc] (http://xmlsoft.org/XSLT/xsltproc.html) auf Ihrem System? – Tomalak
leider nicht – user3322838
(Folgen Sie diesem Kommentar, wenn Sie einen schnellen Hack benötigen. Dies ist keine langfristige Lösung.) Obwohl Sie nichts installieren können, können Sie in der Regel die Binärdatei (& Abhängigkeiten) zu diesem System kompilieren und kopieren Pfad, zu dem Sie Schreibberechtigung haben. Im schlimmsten Fall ist '/ tmp' lesend/schreibend. Sie können versuchen, die neue Version von 'xmllint' in diesen Pfad zu kopieren und von dort auszuführen. – anishsane