特定のノードからデータを抽出するためにXMLを解析する際に問題に直面しています。私はLink1Link2Link3を参照しました。注意&にid、ORDER_IDなどのように、以下のxmlファイル内の他のノードのデータを取得する解析できています。しかし、以下のライン/ノードに対して、segment_idに& INSTRUMENT_IDの情報を抽出することができませんでしください:XML解析 - 特定のノードからテキストを解析する際の問題
<trade segment_id="NSE-F&O " instrument_id="NSE:INFRATEL17NOVFUT">
XMLファイルの設定方法や、特定のノードのデータを抽出する方法が間違っているかどうかは不明です。私が直面している特定の問題がはっきりしていることを望む。
XMLファイル:
<contract_note version="0.1">
<contracts>
<contract>
<id>CNT-17/18-5310750</id>
<name>CONTRACT NOTE CUM BILL</name>
<description>None</description>
<timestamp>2017-11-01</timestamp>
<trades>
<trade segment_id="NSE-F&O " instrument_id="NSE:INFRATEL17NOVFUT">
<id>37513030</id>
<order_id>1300000000352370</order_id>
<timestamp>09:20:48</timestamp>
<description>None</description>
<type>buy</type>
<quantity>1700</quantity>
<average_price>444.2</average_price>
<value>755140.0</value>
</trade>
</trades>
</contract>
</contracts>
</contract_note>
コード:
try {
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(xmlFile);
NodeList cNoteList = doc.getElementsByTagName("contract");
Node nNode = cNoteList.item(0);
if (nNode.getNodeType() == Node.ELEMENT_NODE) {
Element eElement = (Element) nNode;
for (int j = 1; j <= eElement.getElementsByTagName("trade").getLength(); j++) {
// Check if data can be read for Node - 'id'
System.out.println(eElement.getElementsByTagName("id").item(j).getTextContent();
// Check if data can be read for segment_id & instrument_id
System.out.println("Scrip: " + eElement.getElementsByTagName("trade").item(0).getTextContent());
}
}catch (Exception e) {
e.printStackTrace();
}
編集: は上記のxmlファイルの情報を修正しました。
&文字は問題を引き起こしているものです。それはエスケープする必要があります。 – Juan
OPの前後でやりとりされた後、本当の疑問は基本的な「JavaでXML属性値を読むにはどうすればよいですか」という質問が出ます。重複して閉じる。 – kjhughes
あなたが引用したスレッドを検索していないため、ありがとうございました。 – iCoder