Continuação do topico Anterior https://cursos.alura.com.br/forum/topico-xml-que-nao-consigo-manipular-21653
Obrigado ao Fernando, porém, chegamos a conclusão do Ultimo Código:
import java.io.IOException;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.xml.sax.SAXException;
public class teste {
public static void main(String[] args) throws Exception {
List<String> tags = Arrays.asList("connectionStrings", "add", "y", "z", "q");
List<String> arquivos = Arrays.asList("src/web.config.xml");
Map<String, String> attrs = new HashMap<>();
attrs.put("connectionString", "NOVOVALOR");
attrs.put("value", "novoValorValue");
attrs.put("x", "não existe X");
for (String arquivo : arquivos) {
Document document = abreArquivo(arquivo);
for (String tag : tags) {
for (String attr : attrs.keySet()) {
int tagsAdd = document.getElementsByTagName(tag).getLength();
for (int i = 0; i < tagsAdd; i++) {
Element element = (Element) document.getElementsByTagName(tag).item(i);
if (element.hasAttribute(attr)) {
String attribute = element.getAttribute(attr);
System.out.println(attr + "=" + attribute);
System.out.println(attr + "=" + attrs.get(attr));
}
}
}
}
}
}
private static Document abreArquivo(String arquivo) throws ParserConfigurationException, SAXException, IOException {
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
return builder.parse(arquivo);
}
}
Porém com um XML que tenha varias TAGS ADD, eu precisava Mapear assim: Alterar tudo que esteja dentro da Tag e todo ADD que estiver dentro dessa tag, os valores, e afins...
Como eu poderia fazer isso?