Como analisar xml para xml

Como analisar xml para xml

Estou tentando automatizar esse processo.

Eu tenho um link para este arquivo xml. tem muitos parâmetros, mas estou interessado apenas em três de seus parâmetros. Quero usar esses 3 parâmetros e criar um novo arquivo xml automaticamente com nomes de tags diferentes.

veja a captura de tela.

Arquivo XML original.Arquivo XML

Estou interessado apenas em todos os //item/image", //item/source/file_details/file, e //item/title.

Como posso criar automaticamente outro arquivo XML e obter todos esses parâmetros com diferentes metanomes?

Tentei importar importxmlna planilha do Google, mas não sei como criar XML a partir dela.

o resultado final deve ser assim. `http://blog.defaultroute.com/2011/01/04/building-a-roku-channel-part-2/

Obrigado

Responder1

Você poderia escrever um aplicativo Java para resolver o problema.

Por exemplo, para ler os dados que você precisa:

File fXmlFile = new File(fileName);
        DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
        DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
        Document doc = dBuilder.parse(fXmlFile);
        doc.getDocumentElement().normalize();


        NodeList playlists = doc.getElementsByTagName("playlist");      // Get all Nodes named 'playlist'
        if(playlists != null && playlists.getLength() > 0){
            for (int temp = 0; temp < playlists.getLength(); temp++) {     // Iterate through all 'playlists'
                if(playlists.item(temp).getNodeType() == Node.ELEMENT_NODE){     //Check if they are Elements (just to be sure)
                    Element playlist = (Element) playlists.item(temp);       // Cast to Element

                    NodeList items = playlist.getElementsByTagName("item");     // Get Nodes named 'item' in 'playlist'

                    for (int temp1 = 0; temp1 < items.getLength(); temp1++) {       // Iterate through all items
                        if(items.item(temp1).getNodeType() == Node.ELEMENT_NODE){
                            Element item = (Element) items.item(temp1);

                            NodeList imgs = item.getElementsByTagName("image");
                            Node img = imgs.item(0);              // We suppose there is only one image-node in the item-node
                            if(img.getNodeType() == Node.ELEMENT_NODE){
                                Element image = (Element) img;
                                String imgUrl = image.getTextContent();      // Get the textContent of image --> Store it in an Array(List) etc...                                      
                            }               
                        }
                    }
                }
            }
        }

É claro que você também deve fazer o mesmo com os outros nós.

E escreva de volta em um arquivo XML usando o DocumentBuilder.

DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = docFactory.newDocumentBuilder();


Document doc = docBuilder.newDocument();
Element rootElement = doc.createElement("playlist");
doc.appendChild(rootElement);

Element item = doc.createElement("item");
rootElement.appendChild(item);

Element image = doc.createElement("image");
item.appendChild(image);
image.appendChild(doc.createTextNode("HERE YOUR ImgURL "));

TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
DOMSource source = new DOMSource(doc);
StreamResult result = new StreamResult(new File(fileName)); 
transformer.transform(source, result);

Espero que isso ajude um pouco.

informação relacionada