Удаление пробелов из строки и затем преобразование в 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();
Другие вопросы по тегам