私は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ファイルに含まれる目録を更新する必要があります。私は "InvUpdate.java"というファイルに自分のjavaコードを置き、購入した製品の数量を引くために "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