Ваш метод createTextNode()
подходит только для создания текстовых узлов, он не подходит для создания элементов. Для этого вам нужно использовать createElement (). Если вы делаете это путем построения дерева, тогда вам необходимо создавать узлы, вы не можете писать лексическую разметку.
Я не уверен, что MainRootElement
должно быть; вы предоставили только фрагмент желаемого результата, поэтому трудно сказать.
Создание дерева DOM с последующей его сериализацией - довольно трудоемкий способ создания файла XML. Проще использовать что-то вроде XMLEventWriter
. Но, честно говоря, меня разочаровали все существующие подходы и я написал новую библиотеку для этой цели как часть Saxon 10. Она называется просто «Pu sh» и выглядит примерно так:
Processor proc = new Processor();
Serializer serializer = proc.newSerializer(new File(fileName));
Push push = proc.newPush(serializer);
Document doc = push.document(true);
doc.setDefaultNamespace("http://my_namespace");
Element root = doc.element("root")
.attribute(new QName("xsi", "http://www.w3.org/2001/XMLSchema-instance", "schemaLocation"),
"http://my_namespace file.xsd");
doc.close();