※ ChatGPTを利用し、要約された質問です(原文:XMLファイルの読み方)
JavaでXMLファイルを読み込み、groupノードのアトリビュートを取得する方法
このQ&Aのポイント
JavaでXMLファイルを読み込む方法およびgroupノードのアトリビュートを取得する方法について教えてください。
XMLファイルからデータを取得するためにJavaでDOMパーサーを使用しています。具体的には、groupノードのアトリビュートであるgrpIDとnumStdGrpの値を取得したいです。
getElementsByTagNameメソッドでは、どのbandのgroupかを区別することができません。groupノードのアトリビュートを正確に取得する方法をご教示ください。
以下の様なXMLファイルがあるとします。
"groupノード(?)のアトリビュートであるgrpIDとnumStdGrpの値を取得したいです。
JavaでDOMパーサーを使うことに限定します。
<?xml version="1.0" encoding="UTF-8"?>
<dataHeader
<numStudent>150</numStudent>
<dataMain
<band name="B1">
<group grpID="1" numStdGrp="15"/>
</band>
<band name="B2">
<group grpID="2" numStdGrp="10"/>
</band>
</dataMain>
</dataHeader>
自分では試して見たのは以下まで。
File fXmlFile = new File("C:\XMLファイル名");
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(fXmlFile);
doc.getDocumentElement().normalize();
(1)numStudentとdataMainノードまでは簡単:
例)
NodeList nListDM = doc.getElementsByTagName("dataMain");
上記からnListDM.item(0)してノード取得できて、getNodeName()で名前表示する。
(2)bandノード(?)もgetElementsByTagNameで取れます。
NodeList nListBand = doc.getElementsByTagName("band");
このノードリストの長さは2です。それぞれ、アトリビュート「name」の値(B1, B2)は以下の様にして取れます。
Node nNodeBand = nListBand.item(0);
Element bElement = (Element) nNodeBand;
して、bElement.getAttribute("name")。
問題はこの以降。
初めに書きましたように、
groupノード(?)のアトリビュートであるgrpIDとnumStdGrpの値どうやって取得するのでしょうか?
getElementsByTagName(group)はだめです。どのbandのgroupか、区別できないので。
Java+XMLに詳しい方、教えてください。
よろしくお願いします。
お礼
hitomuraさん ヒント、ありがとうございました。 解決しました。