我正在尝试检查XML文件中是否存在特定的2个字符串。
xml代码
<datapoint nature="PARAMETRIC" division="COLL_COMP_ENG" programmaticName="t_val_calc_enrg_accumulated" />
<datapoint nature="PARAMETRIC" division="COLL_COMP_ENG" programmaticName="t_val_calc_pwr_consumed" />
Java代码..
Integer count=0;
XMLInputFactory f = XMLInputFactory.newInstance();
XMLStreamReader rdr = f.createXMLStreamReader(new FileReader("E:\\SVN\\MasterData\\MasterData.xml"));
while (rdr.hasNext()) {
if (rdr.next() == XMLStreamConstants.START_ELEMENT) {
if (rdr.getLocalName().equals("datapoint")) {
String txt = rdr.getAttributeValue("programmaticName");
if (txt.indexOf("t_val_calc_pwr_consumed") > 0 || txt.indexOf("t_val_calc_enrg_accumulated") > 0) {
System.out.println(txt);
count++;
}
}
}
}
System.out.println(count);
每当我尝试运行代码时,我都会收到错误消息“String无法转换为int”。
String txt = rdr.getAttributeValue("programmaticName");
堆栈跟踪是
Exception in thread "main" java.lang.RuntimeException: Uncompilable source code - Erroneous sym type: javax.xml.stream.XMLStreamReader.getAttributeValue
at sample.eXTRACT.main(eXTRACT.java:42)
Java Result: 1
BUILD SUCCESSFUL (total time: 2 seconds)
预期产出:
t_val_calc_enrg_accumulated
t_val_calc_pwr_consumed
答案 0 :(得分:1)
XMLStreamReader#getAttributeValue
将int
作为参数的索引(例如,在这种情况下,rdr.getAttributeValue(2)
)。
您使用单个String
对其进行参数化,这将无法编译。
除基于int
的属性订单索引外,您还可以使用重载:getAttributeValue(String namespaceURI, String localName)
API here。