Ниже код моей функции. Возможно, моя проблема заключается в том, что я неправильно понял как работает insertBefore. Работу этого метода я понял так, insertBefore имеет два параметра: первый параметр - узел, который хотим вставить, второй параметр - перед каким узлом хотим вставить. Вызываем сам метод insertBefore у того узла, для которого нововставленный узел будет дочерним. Если все так, тогда не могу понять, почему данный код не вставляет комментарий там, где нужно.
public static Document addCommentsToDocument(Object obj, String tagName, String comment) throws Exception{
String fileName = new String("/home/albuquerque/XML.xml");
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document document = db.parse(file);
document.getDocumentElement().normalize();
Node root = document.getDocumentElement();
NodeList listNode = root.getChildNodes();
Comment com = document.createComment(comment);
for (int i = 0; i < listNode.getLength(); i++) {
Node node = listNode.item(i);
root.insertBefore(com, node);
}
return document;
}
Ниже код XML. Перед каждым тегом, кроме родительского нужно вставить комментарий.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<example>
<a>a</a>
<b>b</b>
<string1>string1</string1>
<string2>string2</string2>
</example>
Но вставка происходит такая:
<?xml version="1.0" encoding="UTF-8"?><example>
<a>1</a>
<b>1</b>
<string1>string1</string1>
<string2>string2</string2><!--it's a comment-->
</example>
Что не так я делаю?
Элемент вставлялся неправильно из-за того, что узел-комментарий был один и просто передвигался от одного элемента к другому, передвигаясь к самому последнему внутреннему элементу родительского тега. Решением оказалось создание на каждой итерации нового узла-коммента и добавлением его к нужному элементу.
n.getParentNode().insertBefore(document.createComment(comment), n);
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Объясните, пожалуйста, что значит modeladdAttribute("some text", someObject);
Есть приложение в котором можно выполнять скрипты на JSЗадача - из этого приложения отправлять e-mail