我正在嘗試將這個過程自動化。
我有這個 xml 檔的連結。它有很多參數,但我只對其中的 3 個參數感興趣。我想使用這 3 個參數並使用不同的標籤名稱自動建立新的 xml 檔案。
請參閱螢幕截圖。
原始 XML 檔案。XML文件
我只對所有//item/image"
, //item/source/file_details/file
, 和感興趣//item/title
。
如何自動建立另一個 XML 檔案並使用不同的元名稱來取得所有這些參數?
我嘗試過匯入importxml
Google 電子表格,但不知道如何從中建立 XML。
最終結果應該是這樣的。 `http://blog.defaultroute.com/2011/01/04/building-a-roku-channel-part-2/
謝謝
答案1
您可以編寫一個 Java 應用程式來實現這一目的。
例如讀取您需要的資料:
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...
}
}
}
}
}
}
當然,您也必須對其他節點執行相同的操作。
並使用 DocumentBuilder 將其寫入 XML 檔案中。
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);
希望這個對你有幫助。