2017-11-28 8 views
2

私は非常に初心者であり、これらの簡単な質問には申し訳ありません。ユーザーからの助けを得ることを願っています。あなたの時間をありがとう!Javaアプリケーションを使用してXMLファイルを処理する際に直面する問題

Q1。コンソールで、コントロールサマリの結果 '5'が隣の行ではなく次の行に表示されます。私はこのようなコンソールの結果を得る方法を知ってもいいですか?[Control summary:5]?

Q2。 xml.fileに 'items'というタグがあり、 'item'とその内容をラップしています。タグ 'test'はルート要素ですが、この 'items'タグはどうですか?誰もそれは何ですか、どのようにコードでJavaアプリケーションに変換するか教えてください?

XMLファイル

<?xml version="1.0" encoding="utf-8"?> 
 
<test xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
 
\t xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
 
\t xmlns="http://www.stee.com.sg/q2.xsd"> 
 
\t <controlsummary> 
 
\t \t <totalrecords>5</totalrecords> 
 
\t </controlsummary> 
 
\t <items> 
 
\t \t <item> 
 
\t \t \t <data>TEST1</data> 
 
\t \t \t <data_datetime>20120901000000</data_datetime> 
 
\t \t \t <total_a>492.00</total_a> 
 
\t \t \t <total_a_in_unit>TONNES</total_a_in_unit> 
 
\t \t \t <total_b>420.00</total_b> 
 
\t \t \t <total_b_in_unit>TONNES</total_b_in_unit> 
 
\t \t \t <loc_id>1</loc_id> 
 
\t \t \t <loc_desc>Llanfairpwllgwyngyllgogerychwyrndrobwllllantysiliogogogoch</loc_desc> 
 
\t \t \t <company_id>6001</company_id> 
 
\t \t \t <company_name>Great Real Estate pte ltd</company_name> 
 
\t \t </item> 
 
\t \t <item> 
 
\t \t \t <data>TEST7</data> 
 
\t \t \t <data_datetime>20120901000000</data_datetime> 
 
\t \t \t <total_a>2228.00</total_a> 
 
\t \t \t <total_a_in_unit>TONNES</total_a_in_unit> 
 
\t \t \t <total_b>2260.00</total_b> 
 
\t \t \t <total_b_in_unit>TONNES</total_b_in_unit> 
 
\t \t \t <loc_id>5</loc_id> 
 
\t \t \t <loc_desc>Taumatawhakatangi­hangakoauauotamatea­turipukakapikimaunga­horonukupokaiwhen­uakitanatahu</loc_desc> 
 
\t \t \t <company_id>5010</company_id> 
 
\t \t \t <company_name>Altitude Fulle Coverage</company_name> 
 
\t \t </item> 
 
\t \t <item> 
 
\t \t \t <data>TEST3</data> 
 
\t \t \t <data_datetime>20120901000000</data_datetime> 
 
\t \t \t <total_a>1241.00</total_a> 
 
\t \t \t <total_a_in_unit>TONNES</total_a_in_unit> 
 
\t \t \t <total_b>1021.00</total_b> 
 
\t \t \t <total_b_in_unit>TONNES</total_b_in_unit> 
 
\t \t \t <loc_id>3</loc_id> 
 
\t \t \t <loc_desc>Chargoggagoggmanchauggagoggchaubunagungamaugg</loc_desc> 
 
\t \t \t <company_id>5111</company_id> 
 
\t \t \t <company_name>Big Beeing Craze Food Mania</company_name> 
 
\t \t </item> 
 
\t \t <item> 
 
\t \t \t <data>TEST5</data> 
 
\t \t \t <data_datetime>20120901000000</data_datetime> 
 
\t \t \t <total_a>550.00</total_a> 
 
\t \t \t <total_a_in_unit>TONNES</total_a_in_unit> 
 
\t \t \t <total_b>0.00</total_b> 
 
\t \t \t <total_b_in_unit>TONNES</total_b_in_unit> 
 
\t \t \t <loc_id>0</loc_id> 
 
\t \t \t <loc_desc>Tweebuffelsmeteenskootmorsdoodgeskietfontein</loc_desc> 
 
\t \t \t <company_id>73</company_id> 
 
\t \t \t <company_name>Monotone Classic Paper Producer</company_name> 
 
\t \t </item> 
 
\t \t <item> 
 
\t \t \t <data>TEST6</data> 
 
\t \t \t <data_datetime>20120901000000</data_datetime> 
 
\t \t \t <total_a>3664.00</total_a> 
 
\t \t \t <total_a_in_unit>TONNES</total_a_in_unit> 
 
\t \t \t <total_b>3450.00</total_b> 
 
\t \t \t <total_b_in_unit>TONNES</total_b_in_unit> 
 
\t \t \t <loc_id>6</loc_id> 
 
\t \t \t <loc_desc>Pekwachnamaykoskwaskwaypinwanik</loc_desc> 
 
\t \t \t <company_id>104</company_id> 
 
\t \t \t <company_name>No Name Futuristic Para</company_name> 
 
\t \t </item> 
 
\t </items> 
 
</test>

Javaアプリケーション

package question2_try1; 
 

 
import java.io.File; 
 
import javax.xml.parsers.DocumentBuilder; 
 
import javax.xml.parsers.DocumentBuilderFactory; 
 
import org.w3c.dom.Document; 
 
import org.w3c.dom.Element; 
 
import org.w3c.dom.Node; 
 
import org.w3c.dom.NodeList; 
 

 
public class ProcessXML { 
 

 
\t public static void main (String[] args) { 
 
\t \t 
 
\t \t try { 
 
\t \t \t File fXmlFile = new File("C:\\Users\\User\\Desktop\\ST eletronics\\Q2_20170206112222.xml"); 
 
\t \t \t DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); 
 
\t \t \t DocumentBuilder dBuilder = dbFactory.newDocumentBuilder(); 
 
\t \t \t Document doc = dBuilder.parse(fXmlFile); 
 
\t \t \t 
 
\t \t \t doc.getDocumentElement().normalize(); 
 
\t \t \t 
 
\t \t \t System.out.println("Root element :" +doc.getDocumentElement().getNodeName()); 
 
\t \t \t 
 
\t \t \t //controlsummary & items 
 
\t \t \t 
 
\t \t \t 
 
\t \t \t System.out.println("Control summary :" +doc.getElementsByTagName("controlsummary").item(0).getTextContent()); 
 
\t \t \t 
 
\t \t \t 
 
\t \t \t 
 
\t \t \t NodeList nList = doc.getElementsByTagName("item"); 
 
\t \t \t 
 
\t \t \t System.out.println("----------------------------"); 
 
\t \t \t 
 
\t \t \t for (int temp = 0; temp < nList.getLength(); temp++) { 
 

 
\t \t \t \t Node nNode = nList.item(temp); 
 
\t \t \t \t 
 
\t \t \t \t System.out.println("\nCurrent Element :" + nNode.getNodeName()); 
 

 
\t \t \t \t if (nNode.getNodeType() == Node.ELEMENT_NODE) { 
 

 
\t \t \t \t \t Element eElement = (Element) nNode; 
 

 
\t \t \t \t \t System.out.println("Data : " + eElement.getElementsByTagName("data").item(0).getTextContent()); 
 
\t \t \t \t \t System.out.println("Data datetime : " + eElement.getElementsByTagName("data_datetime").item(0).getTextContent()); 
 
\t \t \t \t \t System.out.println("Total a : " + eElement.getElementsByTagName("total_a").item(0).getTextContent()); 
 
\t \t \t \t \t System.out.println("Total a in unit : " + eElement.getElementsByTagName("total_a_in_unit").item(0).getTextContent()); 
 
\t \t \t \t \t System.out.println("Total b : " + eElement.getElementsByTagName("total_b").item(0).getTextContent()); 
 
\t \t \t \t \t System.out.println("Total b in unit : " + eElement.getElementsByTagName("total_b_in_unit").item(0).getTextContent()); 
 
\t \t \t \t \t System.out.println("Loc id : " + eElement.getElementsByTagName("loc_id").item(0).getTextContent()); 
 
\t \t \t \t \t System.out.println("Loc desc : " + eElement.getElementsByTagName("loc_desc").item(0).getTextContent()); 
 
\t \t \t \t \t System.out.println("Company id : " + eElement.getElementsByTagName("company_id").item(0).getTextContent()); 
 
\t \t \t \t \t System.out.println("Company Name : " + eElement.getElementsByTagName("company_name").item(0).getTextContent()); 
 

 
\t \t \t \t } 
 
\t \t \t } 
 
\t \t \t 
 
\t \t }catch (Exception e) { 
 
\t \t e.printStackTrace(); \t 
 
\t \t } 
 
\t } \t 
 
}

あなたの最初の質問については

Console: 
 
Root element :test 
 
Control summary : 
 
\t \t 5 
 
---------------------------- 
 

 
Current Element :item 
 
Data : TEST1 
 
Data datetime : 20120901000000 
 
Total a : 492.00 
 
Total a in unit : TONNES 
 
Total b : 420.00 
 
Total b in unit : TONNES 
 
Loc id : 1 
 
Loc desc : Llanfairpwllgwyngyllgogerychwyrndrobwllllantysiliogogogoch 
 
Company id : 6001 
 
Company Name : Great Real Estate pte ltd 
 

 
Current Element :item 
 
Data : TEST7 
 
Data datetime : 20120901000000 
 
Total a : 2228.00 
 
Total a in unit : TONNES 
 
Total b : 2260.00 
 
Total b in unit : TONNES 
 
Loc id : 5 
 
Loc desc : Taumatawhakatangi­hangakoauauotamatea­turipukakapikimaunga­horonukupokaiwhen­uakitanatahu 
 
Company id : 5010 
 
Company Name : Altitude Fulle Coverage 
 

 
Current Element :item 
 
Data : TEST3 
 
Data datetime : 20120901000000 
 
Total a : 1241.00 
 
Total a in unit : TONNES 
 
Total b : 1021.00 
 
Total b in unit : TONNES 
 
Loc id : 3 
 
Loc desc : Chargoggagoggmanchauggagoggchaubunagungamaugg 
 
Company id : 5111 
 
Company Name : Big Beeing Craze Food Mania 
 

 
Current Element :item 
 
Data : TEST5 
 
Data datetime : 20120901000000 
 
Total a : 550.00 
 
Total a in unit : TONNES 
 
Total b : 0.00 
 
Total b in unit : TONNES 
 
Loc id : 0 
 
Loc desc : Tweebuffelsmeteenskootmorsdoodgeskietfontein 
 
Company id : 73 
 
Company Name : Monotone Classic Paper Producer 
 

 
Current Element :item 
 
Data : TEST6 
 
Data datetime : 20120901000000 
 
Total a : 3664.00 
 
Total a in unit : TONNES 
 
Total b : 3450.00 
 
Total b in unit : TONNES 
 
Loc id : 6 
 
Loc desc : Pekwachnamaykoskwaskwaypinwanik 
 
Company id : 104 
 
Company Name : No Name Futuristic Para

+0

それが唯一のポストずつ質問をするのが最善です。あなたの最初の質問では、改行と余分なスペースを避ける1つの方法は、 'lineSeedとスペースを含む' controlSummary'自体の代わりに 'controlSummary'の中の' totalRecords'タグを選択することです。 – Aaron

+0

@Aaron、あなたのガイドラインに感謝します。次に、タグ内にをどのように記述する必要がありますか? – yTze

+0

ルート要素はまたはである必要がありますか?そのうちの1つがルート要素であれば、別の要素は単なる要素ですか? – yTze

答えて

0

- あなただけの直接totalRecordsタグを使用することができ、それが動作するはずです。

System.out.println("Control summary :" +doc.getElementsByTagName("totalrecords").item(0).getTextContent()); 

2番目の質問では、itemsは単なるアイテム(子要素)のリストです。 Testはあなたのルートタグです(あなたがすでに述べた通りです)。また、itemsは複数の子要素を持つ別のタグです。複数の子要素を持つことができる複数の異なる親タグを持つことができます。

例を示すために、最後に新しいタグ価格を追加するようにXMLを更新しています。それは価格の2つの子要素を含んでいます。ブロックを読み取るコードも更新しました。このコードには、最初の質問に対する回答も含まれています。

<?xml version="1.0" encoding="utf-8"?> 
 
<test xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
 
\t xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
 
\t xmlns="http://www.stee.com.sg/q2.xsd"> 
 
\t <controlsummary> 
 
\t \t <totalrecords>5</totalrecords> 
 
\t </controlsummary> 
 
\t <items> 
 
\t \t <item> 
 
\t \t \t <data>TEST1</data> 
 
\t \t \t <data_datetime>20120901000000</data_datetime> 
 
\t \t \t <total_a>492.00</total_a> 
 
\t \t \t <total_a_in_unit>TONNES</total_a_in_unit> 
 
\t \t \t <total_b>420.00</total_b> 
 
\t \t \t <total_b_in_unit>TONNES</total_b_in_unit> 
 
\t \t \t <loc_id>1</loc_id> 
 
\t \t \t <loc_desc>Llanfairpwllgwyngyllgogerychwyrndrobwllllantysiliogogogoch</loc_desc> 
 
\t \t \t <company_id>6001</company_id> 
 
\t \t \t <company_name>Great Real Estate pte ltd</company_name> 
 
\t \t </item> 
 
\t \t <item> 
 
\t \t \t <data>TEST7</data> 
 
\t \t \t <data_datetime>20120901000000</data_datetime> 
 
\t \t \t <total_a>2228.00</total_a> 
 
\t \t \t <total_a_in_unit>TONNES</total_a_in_unit> 
 
\t \t \t <total_b>2260.00</total_b> 
 
\t \t \t <total_b_in_unit>TONNES</total_b_in_unit> 
 
\t \t \t <loc_id>5</loc_id> 
 
\t \t \t <loc_desc>Taumatawhakatangi­hangakoauauotamatea­turipukakapikimaunga­horonukupokaiwhen­uakitanatahu</loc_desc> 
 
\t \t \t <company_id>5010</company_id> 
 
\t \t \t <company_name>Altitude Fulle Coverage</company_name> 
 
\t \t </item> 
 
\t \t <item> 
 
\t \t \t <data>TEST3</data> 
 
\t \t \t <data_datetime>20120901000000</data_datetime> 
 
\t \t \t <total_a>1241.00</total_a> 
 
\t \t \t <total_a_in_unit>TONNES</total_a_in_unit> 
 
\t \t \t <total_b>1021.00</total_b> 
 
\t \t \t <total_b_in_unit>TONNES</total_b_in_unit> 
 
\t \t \t <loc_id>3</loc_id> 
 
\t \t \t <loc_desc>Chargoggagoggmanchauggagoggchaubunagungamaugg</loc_desc> 
 
\t \t \t <company_id>5111</company_id> 
 
\t \t \t <company_name>Big Beeing Craze Food Mania</company_name> 
 
\t \t </item> 
 
\t \t <item> 
 
\t \t \t <data>TEST5</data> 
 
\t \t \t <data_datetime>20120901000000</data_datetime> 
 
\t \t \t <total_a>550.00</total_a> 
 
\t \t \t <total_a_in_unit>TONNES</total_a_in_unit> 
 
\t \t \t <total_b>0.00</total_b> 
 
\t \t \t <total_b_in_unit>TONNES</total_b_in_unit> 
 
\t \t \t <loc_id>0</loc_id> 
 
\t \t \t <loc_desc>Tweebuffelsmeteenskootmorsdoodgeskietfontein</loc_desc> 
 
\t \t \t <company_id>73</company_id> 
 
\t \t \t <company_name>Monotone Classic Paper Producer</company_name> 
 
\t \t </item> 
 
\t \t <item> 
 
\t \t \t <data>TEST6</data> 
 
\t \t \t <data_datetime>20120901000000</data_datetime> 
 
\t \t \t <total_a>3664.00</total_a> 
 
\t \t \t <total_a_in_unit>TONNES</total_a_in_unit> 
 
\t \t \t <total_b>3450.00</total_b> 
 
\t \t \t <total_b_in_unit>TONNES</total_b_in_unit> 
 
\t \t \t <loc_id>6</loc_id> 
 
\t \t \t <loc_desc>Pekwachnamaykoskwaskwaypinwanik</loc_desc> 
 
\t \t \t <company_id>104</company_id> 
 
\t \t \t <company_name>No Name Futuristic Para</company_name> 
 
\t \t </item> 
 
\t </items> 
 
<prices> 
 
    <price> 
 
\t <data>TEST5</data> 
 
\t <unitPrice>5</unitPrice> 
 
    </price> 
 
    <price> 
 
\t <data>TEST7</data> 
 
\t <unitPrice>15</unitPrice> 
 
    </price> 
 
</prices> 
 
</test>

更新されたコード

package question2_try1; 
 

 
import java.io.File; 
 
import javax.xml.parsers.DocumentBuilder; 
 
import javax.xml.parsers.DocumentBuilderFactory; 
 
import org.w3c.dom.Document; 
 
import org.w3c.dom.Element; 
 
import org.w3c.dom.Node; 
 
import org.w3c.dom.NodeList; 
 

 
public class ProcessXML { 
 

 
\t public static void main (String[] args) { 
 
\t \t 
 
\t \t try { 
 
\t \t \t File fXmlFile = new File("C:\\Users\\User\\Desktop\\ST eletronics\\Q2_20170206112222.xml"); 
 
\t \t \t DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); 
 
\t \t \t DocumentBuilder dBuilder = dbFactory.newDocumentBuilder(); 
 
\t \t \t Document doc = dBuilder.parse(fXmlFile); 
 
\t \t \t 
 
\t \t \t doc.getDocumentElement().normalize(); 
 
\t \t \t 
 
\t \t \t System.out.println("Root element :" +doc.getDocumentElement().getNodeName()); 
 
\t \t \t 
 
\t \t \t //controlsummary & items 
 
\t \t \t 
 
\t \t \t 
 
\t \t \t System.out.println("Control summary :" +doc.getElementsByTagName("totalrecords").item(0).getTextContent()); 
 
\t \t \t 
 
\t \t \t 
 
\t \t \t 
 
\t \t \t NodeList nList = doc.getElementsByTagName("item"); 
 
\t \t \t 
 
\t \t \t System.out.println("----------------------------"); 
 
\t \t \t 
 
\t \t \t for (int temp = 0; temp < nList.getLength(); temp++) { 
 

 
\t \t \t \t Node nNode = nList.item(temp); 
 
\t \t \t \t 
 
\t \t \t \t System.out.println("\nCurrent Element :" + nNode.getNodeName()); 
 

 
\t \t \t \t if (nNode.getNodeType() == Node.ELEMENT_NODE) { 
 

 
\t \t \t \t \t Element eElement = (Element) nNode; 
 

 
\t \t \t \t \t System.out.println("Data : " + eElement.getElementsByTagName("data").item(0).getTextContent()); 
 
\t \t \t \t \t System.out.println("Data datetime : " + eElement.getElementsByTagName("data_datetime").item(0).getTextContent()); 
 
\t \t \t \t \t System.out.println("Total a : " + eElement.getElementsByTagName("total_a").item(0).getTextContent()); 
 
\t \t \t \t \t System.out.println("Total a in unit : " + eElement.getElementsByTagName("total_a_in_unit").item(0).getTextContent()); 
 
\t \t \t \t \t System.out.println("Total b : " + eElement.getElementsByTagName("total_b").item(0).getTextContent()); 
 
\t \t \t \t \t System.out.println("Total b in unit : " + eElement.getElementsByTagName("total_b_in_unit").item(0).getTextContent()); 
 
\t \t \t \t \t System.out.println("Loc id : " + eElement.getElementsByTagName("loc_id").item(0).getTextContent()); 
 
\t \t \t \t \t System.out.println("Loc desc : " + eElement.getElementsByTagName("loc_desc").item(0).getTextContent()); 
 
\t \t \t \t \t System.out.println("Company id : " + eElement.getElementsByTagName("company_id").item(0).getTextContent()); 
 
\t \t \t \t \t System.out.println("Company Name : " + eElement.getElementsByTagName("company_name").item(0).getTextContent()); 
 

 
\t \t \t \t } 
 
\t \t \t } 
 
     NodeList npricesList = doc.getElementsByTagName("price"); 
 
\t \t 
 
\t \t System.out.println("============[- _ -]======================"); 
 
\t \t 
 
\t \t for (int temp = 0; temp < npricesList.getLength(); temp++) { 
 

 
\t \t \t Node nNode = npricesList.item(temp); 
 
\t \t \t 
 
\t \t \t System.out.println("\nCurrent Element :" + nNode.getNodeName()); 
 

 
\t \t \t if (nNode.getNodeType() == Node.ELEMENT_NODE) { 
 

 
\t \t \t \t Element eElement = (Element) nNode; 
 

 
\t \t \t \t System.out.println("Data : " + eElement.getElementsByTagName("data").item(0).getTextContent()); 
 
\t \t \t \t System.out.println("price : " + eElement.getElementsByTagName("unitPrice").item(0).getTextContent()); 
 
\t \t \t \t 
 

 
\t \t \t } 
 
\t \t } 
 
\t \t \t 
 
\t \t }catch (Exception e) { 
 
\t \t e.printStackTrace(); \t 
 
\t \t } 
 
\t } \t 
 
}

+0

あなたの答えは本当にありがとう!今私は私の混乱を明らかにする。 – yTze

関連する問題