Зачем вам статический метод, если вы его дергаете из себя, то логично делать $this->makeTree()просто у меня это не единственная модель где древовидная структура, да кстати можно было бы этот метод вынеси в trait, об этом только сейчас подумал, но я создал отдельный класс TreeServices для этого.
Если у вас дерево ограниченной вложенности (обычно меньше 2-3 уровня), то достаточно воспользоваться дот нотацией в withПроблема в том что нет ограничений для вложенности
transformer.setOutputProperty(OutputKeys.INDENT, "yes"); добавляет отступы, а так как в файле xml у меня уже были записи, то к ним добавляются отступы ещё, по мимо тех что которые уже были в файле, поэтому я и получал пустые строки между тегами. Ну и решил проблему тем, что просто строю новый Document если нужно добавлять что то новое в xml и перезаписываю xml файл новыми данными, а раньше я просто дописывал в xml файл новые данные, и получал пустые строки между тегами.public static Document modelsToDocument(ArrayList<Country> countries) throws ParserConfigurationException {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document document = builder.newDocument();
Element root = document.createElement("countries");
document.appendChild(root);
for(Country country : countries) {
root.appendChild(Elements.getCountry(document,country));
}
return document;
}
Канонический адрес страницы Яндекс
А Google пишет:
Как консолидировать повторяющиеся URL
Google получается что ли все равно будет сканировать дубликаты но реже, и это кажется как то не очень. Хотя с Яндексом тоже не до конца понятно, там просто написано что "страница пропадет из результатов поиска", а сканироваться может быть тоже будет.