【发布时间】:2017-11-06 13:03:17
【问题描述】:
在解析 XML 以从特定节点提取数据时遇到问题。我提到了Link1Link2Link3。请注意,我能够解析和获取以下 xml 文件中其他节点的数据,例如 id、order_id 等。但对于以下行/节点,无法提取 segment_id 和 instrument_id 的信息:
<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 文件信息。
【问题讨论】:
-
& 字符是造成问题的原因。它应该被转义。
-
在与 OP 反复讨论之后,真正的问题变成了一个基本的“我如何在 Java 中读取 XML 属性值”的问题。因重复而关闭。
-
感谢您并诚挚道歉,您没有搜索您引用的主题。
标签: java xml parsing xml-parsing