특정 노드에서 데이터를 추출하기 위해 XML 구문 분석에 문제가 있습니다. 내가 참조한 Link1Link2Link3.XML Parse - 특정 노드의 텍스트 구문 분석 문제
<trade segment_id="NSE-F&O " instrument_id="NSE:INFRATEL17NOVFUT">
:주의, SEGMENT_ID & INSTRUMENT_ID의 정보를 추출 할 수없는, &는 아래의 XML ID로 파일 ORDER_ID 등에서 그러나 아래 라인/노드의 다른 노드에 대한 데이터를 얻을 구문 분석 할 수 있어요 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