使用JDK提供的默認文檔類很容易。我寧願在這個特定的項目上使用XPath,因爲它很容易適應DOM中的變化。
首先解析文檔並將其放置在org.w3c.dom.Document
類
DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
Document document = builder.parse(new File("path to your file"));
然後我會創造我的XPath對象,將得到的版本號我要改變的項目。此XPath查詢將找到version
節點,其中名爲file
s的值的兄弟節點設置爲cisco-upgrade_v1_5.jar
。
XPath xPath = XPathFactory.newInstance().newXPath();
Node ciscoVersion = (Node)xPath.evaluate("/jnlp/resource/pattern/version-id[../file='cisco-upgrade_v1_5.jar']",
document.getDocumentElement(),
XPathConstants.NODE);
設置新的版本號
ciscoVersion.setTextContent("1.5.2");
所以,現在我們已經爲cisco-upgrade_v1_5.jar
入門版本號改變了我們可以輸出我們的結果
TransformerFactory tranFactory = TransformerFactory.newInstance();
Transformer aTransformer = tranFactory.newTransformer();
Source src = new DOMSource(document);
Result dest = new StreamResult(new FileOutputStream(new File("path to your file")));
aTransformer.transform(src, dest);
爲了方便起見,這裏是您需要執行此操作的進口清單
import java.io.File;
import java.io.FileOutputStream;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.Result;
import javax.xml.transform.Source;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import javax.xml.xpath.XPath;
import javax.xml.xpath.XPathConstants;
import javax.xml.xpath.XPathFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
使用任何適用於java的XML處理API。至於是否可能沒有資源ID,只有在您可以確切知道資源將在何種順序出現的情況下。 –