I need to parse a given XML file for specific content. Unfortunately I only have xmllint WITHOUT xpath on my system (and I'm not allowed to install / update any other sources).
The XML would contain:
<?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>
In the end I would need an output like this:
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
I do know how to create a string containing the output, but unfortunately I'm not that familiar with sed or similar tools.
Any help on how to extract the needed strings from the xml would be appreciated.
Thanks in advance
/tmpis read-write. You can try copying the new version ofxmllintto that path & execute it from there.gawkis required or if your system has it, but most gawk specific code can be re-written as plain awk without too much trouble. Good luck.--xpathoption even if there's none: github.com/sputnick-dev/xmllint But in 2024, allxmllintshould have--xpathoption