I'm looking to take the following message below and break it apart so that I can read each individual error message in it's own line. It seems maybe the best way to do this is by StringUtils.splitByWholeSeparator and on the 
 characters but I'm struggling. Is this the best way or is there a better way? Thanks in advance.
<?xml version='1.0' encoding='UTF-8'?><S:Envelope xmlns:S="
http://www.w3.org/2003/05/soap-envelope"><S:Body><ns2:submitSingleMessageResponse xmlns:ns2="
http://vaccination.org/" xmlns:ns3="urn:cdc:iisb:2011"><return>
MSH|^~\&|WIR|||15510|20170404204326-0500||ACK^V04^ACK|665689|P|2.5.1|||NE|NE|||||Z23^CDCPHINVS
MSA|AE|2017040420432418
ERR|||207^Application internal error^HL70357|E||||Message Rejected. Please review errors.
ERR||MSH^1|207^Application internal error^HL70357|E||||No valid RXAs -- Message rejected
ERR||MSH^1^4^1|101^Required field missing^HL70357|E||||Sending Facility is required
ERR||MSH^1^6^1|102^Data type error^HL70357|W|4^Invalid value^HL70533|||Value [WIR] is not valid for HL70362
ERR||MSH^1^7^1|102^Data type error^HL70357|W|2^Invalid date^HL70533|||TS_Z data type requires Time Zone
ERR||MSH^1^21^1|102^Data type error^HL70357|E|4^Invalid value^HL70533|||Need a valid profile
ERR||PID^1^11^1^6|103^Table value not found^HL70357|W|5^Table value not found^HL70533|||System does not have table definitions for [HL70399] to validate [USA]
ERR||ORC^1^10^1^13|101^Required field missing^HL70357|W||||Identifier Type Code is required: XCN-1 (ID Number) is valued
ERR||ORC^1^12^1^1|101^Required field missing^HL70357|W||||ID Number is required: XCN.2.1 (Surname) and XCN.3 (Given Name) are not valued
ERR||ORC^1^12^1^2|101^Required field missing^HL70357|W||||Family Name is required
ERR||ORC^1^12^1^2|102^Data type error^HL70357|W|4^Invalid value^HL70533|||Ordering provider last name is required to use ordering provider field.
ERR||ORC^1^12^1^13|101^Required field missing^HL70357|W||||Identifier Type Code is required: XCN-1 (ID Number) is valued
ERR||RXA^1^5^1^4|101^Required field missing^HL70357|W||||Alternate Identifier is blank or empty. Ignoring second tripet
ERR||RXA^1^5^1^4|102^Data type error^HL70357|W||||WIR recommends specification of NDC in second triplet.
ERR||RXA^1^7^1|103^Table value not found^HL70357|E|5^Table value not found^HL70533|||Value [U] not found in table [UCUM]
ERR||RXA^1^9^1^3|102^Data type error^HL70357|E|4^Invalid value^HL70533|||Value [NIP0001] is not valid for Name of Coding System
ERR||RXA^1^10^1^13|101^Required field missing^HL70357|W||||Identifier Type Code is required: XCN-1 (ID Number) is valued
ERR||RXA^1^11^1^4^1|102^Data type error^HL70357|W|4^Invalid value^HL70533|||Incoming administering site (clinic) is not associated with owning provider.
ERR||RXR^1^1^1^3|102^Data type error^HL70357|W|4^Invalid value^HL70533|||Value [HL70162] is not valid for Name of Coding System
ERR||OBX^1^5^1|103^Table value not found^HL70357|W|5^Table value not found^HL70533|||Value [V00] not found in table [HL70064]
ERR||OBX^2^14^1|101^Required field missing^HL70357|W||||Date/Time of the Observation is required
ERR||OBX^3^14^1|101^Required field missing^HL70357|W||||Date/Time of the Observation is required
ERR||OBX^4^14^1|101^Required field missing^HL70357|W||||Date/Time of the Observation is required
ERR||OBX^5^14^1|101^Required field missing^HL70357|W||||Date/Time of the Observation is required
</return></ns2:submitSingleMessageResponse></S:Body></S:Envelope>