Удаление пробелов из строки и затем преобразование в XML
Я хочу удалить пробел из строки, а затем преобразовать его в XML. Это моя строка:
<XMLDoc>
<Envelope>
<Header>
<header>
<msg-id>000C2990-2FBD-11E5-E6CF-FB0900F491A5</msg-id>
</header>
</Header>
<Body>
<GetWorkItemsResponse>
<cursor
numRows="0"
sameConnection="false"
/>
<tuple
>
<old>
<TaskInfo>
...
Я могу удалить пустое пространство, используя str.replaceall("\\s+","")
, Но при преобразовании строки в XML он показывает ошибку, потому что удаляет пространство между элементом и атрибутом. Это дает результат <cursornumRows="0" sameConnection="false"/>
когда фактический элемент <cursor numRows="0" sameConnection="false"/>
, Пространство между элементом cursor
и атрибут numRows
устранен.
Может кто-нибудь мне помочь?
1 ответ
Вам не нужно удалять пробелы перед преобразованием его в XML. Просто
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document document = builder.parse(new InputSource(new StringReader(xmlString)));
буду работать. Когда вы преобразуете XML-документ обратно в строку, пробелы исчезают (по умолчанию - есть также несколько вариантов для симпатичной печати):
TransformerFactory tf = TransformerFactory.newInstance();
Transformer transformer = tf.newTransformer();
StringWriter writer = new StringWriter();
transformer.transform(new DOMSource(doc), new StreamResult(writer));
String outputString = writer.getBuffer().toString();