如何从XML字符串中去除前后垃圾

时间:2017-04-06 13:07:30

标签: java xml-parsing

我有一些XML字符串,其中包含xml字符串之前和之后的一些垃圾。有没有办法修剪这些值,以便我可以成功处理XML。

当前XML:

--35DEUofWdwzmcKmxp4z2RsI7REh-Y5atOY

Content-Disposition: form-data; name="file"; filename="uidoc6379937292471437665.xml5114968690793017785.tmp"

Content-Type: application/octet-stream
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<product xmlns="http://www.example.com/abc/2014/product">
    <timestamp>2017-04-06T04:00:02.387Z</timestamp>
</product>
--35DEUofWdwzmcKmxp4z2RsI7REh-Y5atOY--

新XML:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<product xmlns="http://www.example.com/abc/2014/product">
    <timestamp>2017-04-06T04:00:02.387Z</timestamp>
</product>

2 个答案:

答案 0 :(得分:1)

这取决于你对xml的了解程度。如果它与上述类似,您可以这样做:

int start = source.IndexOf("<?xml");
source = source.Remove(0, start);
int end = source.IndexOf("</product>") + "</product>".Length;
source = source.Remove(end, source.Length-end);

更多错误检查可能是合适的 我在这里假设C#,其他编程语言也有类似的结构。

答案 1 :(得分:-1)

下面的代码段应该有助于消除XML字符串中不需要的字符。如有任何问题,请分享您的意见。

int start = xml.indexOf("<?xml");
String preGarbageValue = xml.substring(0, start);
xml = StringUtils.stripStart(xml, preGarbageValue);
int end = xml.lastIndexOf("</product>")+"</product>".length();

String postGarbageValue = xml.substring(end, xml.length());

xml = StringUtils.stripEnd(xml, postGarbageValue);