В основном согласен с другими ответами, за исключением:
Проблема заключается в том, что у вас есть текстовый узел с null ( not empty) символьным содержимым, вваша doc
или e
структура данных.
Хотя сообщение Кирана (связанное с Саджаном) полезно, я почти уверен, что он ошибся насчет "chars.length () был нулевым, потому что был нулевойПопытка вставки текстового узла. "chars.length()
не был нулем;вызов chars.length()
вызвал NPE, поскольку chars
был нулевым.
Чтобы найти проблему, добавьте вызов метода здесь:
if (e != null) {
transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
source = new DOMSource(e);
checkForNullTextNodes(e); // ADDED
} else {
source = new DOMSource(doc);
checkForNullTextNodes(doc); // ADDED
}
transformer.transform(source, result); // <-- Error occurs here
Затем определите checkForNullTextNodes(node)
для: (псевдокод)
- пройти по дереву с
n
для каждого узла - проверить каждый текстовый узел на наличие нулевых символьных данных
Например (все еще полу-псевдокод)
if (n.getType() == org.w3c.dom.Node.TEXT_NODE && n.getNodeValue() == null) {
throw new Exception("Text node with null content: " +
path to this node);
}
Это должно помочь вам выяснить, где находятся текстовые узлы с нулевым символьным содержимым, что должно помочь вам определить, откуда они берутся.В любом случае, где эти doc
или e
структуры создаются?