[英]Search a particular string in XML file using Stax
我正在嘗試檢查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);
每當我嘗試運行代碼時,我都會收到一條錯誤消息“無法將字符串轉換為int”。
String txt = rdr.getAttributeValue("programmaticName");
stacktrace是
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
XMLStreamReader#getAttributeValue
將int
作為屬性的索引作為參數(例如,在本例中為rdr.getAttributeValue(2)
)。
您正在使用單個String
對其進行參數化,該String
無法編譯。
除了基於int
的屬性順序索引以外,還可以使用重載: getAttributeValue(String namespaceURI, String localName)
API 在這里 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.