我對java和xml都很新。我試圖做到以下幾點:用於更新xml文件內容的Java代碼
我有一個名爲「的text.txt」包含以下信息的文本文件:
Brad Wood, 4562785341, 413, 3
Laury Mitchell, 7822345321, 413, 2
Jack Foster, 6454532347, 8, 13
在每一行,我有:客戶的姓名,信用卡卡號,產品編號和購買數量。
我還有一個名爲「inv.xml」的xml文件,其中包含庫存。
<?xml version="1.0" encoding="UTF-8"?>
<inventory>
<product number="8" price="382.00" quantity= "24" />
<product number="46" price="24.00" quantity= "85" />
<product number="413" price="12.00" quantity= "230" />
</inventory>
java代碼需要根據從文件「text.txt」購買的內容更新xml文件中包含的庫存。我將我的java代碼放在名爲「InvUpdate.java」的文件中,並且命令「java invUpdate text.txt inv.xml」需要修改文件「inv.xml」以減去購買的產品數量。在這個例子中,程序文件「inv.xml」將包含以下信息的執行以下操作:
<?xml version="1.0" encoding="UTF-8"?>
<inventory>
<product number="8" price="382.00" quantity= "11" />
<product number="46" price="24.00" quantity= "85" />
<product number="413" price="12.00" quantity= "225" />
</inventory>
文件「inv.xml」永遠包含每個只有一個「產品」元素的屬性值「數」。在文本文件「text.txt」中也沒有無效的編碼。我不知道可以有多少購買。庫存中可能有負數量的產品。
我認爲它應該是一個很短的程序,包含少於50行,我不需要使用try-catch。正如我所說的,我是一名初學者,我正在努力學習,所以請使用基本的Java編碼保持您的答案非常簡單。沒有高級編碼請。
這是我到目前爲止所做的。我想保持我的代碼與現在一樣,但只是找到一種方法,通過添加缺少的內容或更改錯誤來使它們一起工作。我知道有很多不同的方法可以獲得相同的結果,但我不想使用我還沒學過的編碼。正如我所說我是初學者,我正在努力理解我在做什麼。你在下面看到的幾乎是我所在的一個例子。感謝您的幫助。
import java.io.*;
import org.w3c.dom.*;
import javax.xml.parsers.*;
import javax.xml.transform.*;
import javax.xml.transform.dom.*;
import javax.xml.transform.stream.*;
public class InvUpdate {
public static void main(String[] args) throws IOException {
FileReader file = new FileReader("text.txt");
BufferedReader br = new BufferedReader(file);
String line = null;
while ((line = br.readLine()) != null) {
String str[] =line.split(",");
System.out.println(str[2] +","+str[3]);
}
file.close();
DocumentBuilderFactory factory =
DocumentBuilderFactory.newInstance();
DocumentBuilder parser =
factory.newDocumentBuilder();
Document doc = parser.parse(args[0]);
Element root = doc.getDocumentElement();
NodeList nl = root.getElementsByTagName("product");
for (int i = 0; i < nl.getLength(); ++i) {
Element product = (Element) nl.item(i);
if (product.getAttribute("number").equals(str[2])){
}
product.setAttribute("quantity",Integer.toString(Integer.parseInt(product.getAttribute("quantity")) - qty));
}
TransformerFactory tfact = TransformerFactory.newInstance();
Transformer transformer = tfact.newTransformer();
transformer.setOutputProperty("encoding", "UTF-8");
DOMSource source = new DOMSource(doc);
FileWriter fw = new FileWriter("inv.xml");
StreamResult result = new StreamResult(fw);
transformer.transform(source, result);
}
}
這顯然是某種作業/作業 - 您允許使用第三方庫,還是隻能使用JDK類? – Catchwa
只有JDK類。我想保持我的代碼與現在一樣,但只是找到一種方法,通過添加缺少的內容或更改錯誤來使它們一起工作。我知道有很多不同的方法可以獲得相同的結果,但是我不能使用我還沒學過的編碼。你上面看到的幾乎是我現在正在學習的一個例子。謝謝@Catchwa – Esperanza
我真的是一個初學者,所以它必須保持簡單的基本編碼。謝謝 ! – Esperanza