異なるバス停情報のcsvファイルを読み込み、それらをxmlファイルに変換して新しいxmlファイルとして保存するJavaプログラムを作成しようとしています。私は友人からのいくつかのコードについていくつかの助けをしましたが、コードにコメントを入れることを忘れていたので、問題が何であるか理解できません。コードを修正する助けがあれば大いに感謝します。コードを以下に示します。Javaを使用してCSVファイルをXMLファイルに変換する
public class converter {
protected DocumentBuilderFactory domFactory = null;
protected DocumentBuilder domBuilder = null;
public static void main(String[] args) {
ArrayList<String> busStopInfo = new ArrayList<String>(7);
File file = new File("stops.csv");
BufferedReader readFile = null;
try {
DocumentBuilderFactory df = DocumentBuilderFactory.newInstance();
DocumentBuilder db = df.newDocumentBuilder();
Document document = db.newDocument();
Element rootElement = document.createElement("BusStops");
document.appendChild(rootElement);
readFile = new BufferedReader(new FileReader(file));
int line = 0;
String information = null;
while ((information = readFile.readLine()) != null) {
String[] rowValues = information.split(",");
if (line == 0) {
for (String columnInfo : rowValues) {
busStopInfo.add(columnInfo);
}
} else {
Element childElement = document.createElement("details");
rootElement.appendChild(childElement);
for (int columnInfo = 0; columnInfo < busStopInfo.size(); columnInfo++) {
String header = busStopInfo.get(columnInfo);
String value = null;
if (columnInfo < rowValues.length) {
value = rowValues[columnInfo];
} else {
value = " ";
}
Element current = document.createElement(header);
current.appendChild(document.createTextNode(value));
childElement.appendChild(current);
System.out.println(value);
}
}
line++;
}
Transformer tf = TransformerFactory.newInstance().newTransformer();
tf.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
tf.setOutputProperty(OutputKeys.INDENT, "yes");
Writer output = new StringWriter();
tf.transform(new DOMSource(document), new StreamResult(output));
System.out.println(output.toString());
} catch (Exception e) {
}
}
}
以下csvファイルの抽出
AtcoCode、のCommonName、LocalityName、ParentLocalityName、緯度、経度 0100BRP90336、センター、ブリストルシティセンター、ブリストル、51.4543379612、です - 2.5978824115 0170SGA56570、UWEエントランスノース、アビーウッド,, 51.50419145、-2.549547265 079073001Z、バスステーションエクスプレスラウンジ、ミドルスブラ,, 54.5760020508、-1.2391798779 0800COC31523、バスステーション、ニューキー,, 50.4130339395、-5.0856695446 0800COC56586、バスステーション、カンボーン,, 50.2132677521、-5.2974299693
これは私が
<xs:element name="Busstops">
<xs:element name="stops" minOccurs="1" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="AtcoCode" type="xs:string" minOccurs="1" maxOccurs="1"/>
<xs:element name="CommonName" type="xs:string" "minOccurs="1" maxOccurs="1"/>
<xs:element name="LocalityName" type="xs:string" "minOccurs="1" maxOccurs="1"/>
<xs:element name="ParentLocalityName" type="xs:string" "minOccurs="0" maxOccurs="1"/>
<xs:element name="Longitude" type="xs:string" "minOccurs="1" maxOccurs="1"/>
<xs:element name="Latitude" type="xs:string" "minOccurs="1" maxOccurs="1"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
コードに問題がありますか?どのようにしてあなたが期待していることをしていないのですか? – KevinO
ファイルが出力されずに保存されていないため、この言語での経験があまりないため、不明な点がある場合は非常にわかりません。私はコードを実行し、何も起こっているという証拠はありません。 – Granto867
予想される入力を表示するには、stops.csvから2行を入力する必要があります。予想される出力の短い例があった方が良いでしょう。 – KevinO