Как я произвел org.w3c.dom. Элемент к формату строки в Java?

Да, можно сделать в значительной степени все со встроенными библиотеками. Сделайте поиск, здесь ища теги [python] и [email], и Вы будете видеть, как он сделан.

85
задан Doug Porter 3 February 2011 в 16:21
поделиться

3 ответа

Предполагая, что вы хотите придерживаться стандартного API ...

Вы можете использовать DOMImplementationLS :

Document document = node.getOwnerDocument();
DOMImplementationLS domImplLS = (DOMImplementationLS) document
    .getImplementation();
LSSerializer serializer = domImplLS.createLSSerializer();
String str = serializer.writeToString(node);

Если объявление вас беспокоит, вы можете использовать вместо него преобразователь :

TransformerFactory transFactory = TransformerFactory.newInstance();
Transformer transformer = transFactory.newTransformer();
StringWriter buffer = new StringWriter();
transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
transformer.transform(new DOMSource(node),
      new StreamResult(buffer));
String str = buffer.toString();
153
ответ дан 24 November 2019 в 08:17
поделиться

Если у вас есть схема XML или вы можете иным образом создать для нее привязки JAXB, вы можете использовать JAXB Marshaller для записи в System.out:

import javax.xml.bind.*;
import javax.xml.bind.annotation.*;
import javax.xml.namespace.QName;

@XmlRootElement
public class BoundClass {

    @XmlAttribute
    private String test;

    @XmlElement
    private int x;

    public BoundClass() {}

    public BoundClass(String test) {
        this.test = test;
    }

    public static void main(String[] args) throws Exception {
        JAXBContext jxbc = JAXBContext.newInstance(BoundClass.class);
        Marshaller marshaller = jxbc.createMarshaller();
        marshaller.setProperty(Marshaller.JAXB_FRAGMENT, true);
        marshaller.marshal(new JAXBElement(new QName("root"),BoundClass.class,new Main("test")),System.out);
    }
}
2
ответ дан 24 November 2019 в 08:17
поделиться

Не поддерживается в стандартном API JAXP, я использовал для этой цели библиотеку JDom. Он имеет функцию принтера, параметры форматирования и т. Д. http://www.jdom.org/

1
ответ дан 24 November 2019 в 08:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: