簡體   English   中英

使用Stax搜索XML文件中的特定字符串

[英]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#getAttributeValueint作為屬性的索引作為參數(例如,在本例中為rdr.getAttributeValue(2) )。

您正在使用單個String對其進行參數化,該String無法編譯。

除了基於int的屬性順序索引以外,還可以使用重載: getAttributeValue(String namespaceURI, String localName)

API 在這里

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM