2012-10-15 123 views
0

的我有返回一個字符串類型值的一類,我想返回一個字符串數組,所以請告訴我怎樣才能做到這返回字符串數組中的字符串進行

  1. 我有一個XML文件中像resource.xml
<prompts> 
     <prompt id="p1">welcome to</prompt> 
     <prompt id ="p2">stack overflow</prompt> 
     <prompt id="p3">You entered</prompt> 
     <prompt id="p4">the correct number</prompt> 
<prompts> 

我使用SAX解析器解析它

public class XmlReaderPrompt { 
     public List<PromptBean> load(String langMode) 
     { 
      String fileName="resource.xml";  
      DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance(); 
      InputStream prompt_configfile=Thread.currentThread().getContextClassLoader().getResourceAsStream(fileName); 
      DocumentBuilder db = null; 
      List<PromptBean> promptMap = new ArrayList<PromptBean>(); 
      try { 
       try { 
        db = dbf.newDocumentBuilder(); 
       } catch (ParserConfigurationException e) {    
        e.printStackTrace(); 
       } 
       Document doc = null; 
       try { 
        doc = db.parse(prompt_configfile); 
       } 

       catch (SAXException e) {     
        e.printStackTrace(); 
       }   
       NodeList nodeList=doc.getElementsByTagName("prompt"); 
       for(int i=0;i<nodeList.getLength();i++) 
       { 
        Node node=nodeList.item(i); 
        if(node.getNodeType()==Node.ELEMENT_NODE) 
        {           
         Element element=(Element)node; 
         String id = element.getAttribute("id");    
         String name = element.getAttribute("name");     
         String prompt=getTextValue(element); 
         promptMap.add(new PromptBean(id,name,prompt)); 
        } 
       } 
      }   
      catch(Exception io) 
      { 
       io.printStackTrace();   
      } 
      finally 
      { 
       db=null; 
       dbf=null; 
      }  
      return promptMap; 
     } 

     private String getTextValue(Element element) {  
      String textValue=element.getFirstChild().getTextContent().toString(); 
      return textValue; 
     } 
} 

和UserFunction類從XML文件

public class UserFunction{ 

     List<PromptBean> promptObject = new ArrayList<PromptBean>(); 
public String getPromptFunction(String promptTag,String langMode) 
     {   
      List<PromptBean> promptObject=xrpObject.load(langMode); 
      for (Iterator<PromptBean> iterator = promptObject.iterator(); iterator.hasNext();){ 
      PromptBean promptBean= (PromptBean)iterator.next();    
      if(promptBean.getId().equalsIgnoreCase(promptTag)){ 
       return StringEscapeUtils.escapeXml(promptBean.getPrompt()); 
      } 
      } 
      return null; 
     } 

問題返回文本是我每次我需要從像

子元素獲取文本時間打電話給UserFunction類的方法getPromptFunction
String pr1 = UserFunction.getPromptFunction("p1" "resource"); 
String pr1 = UserFunction.getPromptFunction("p2" "resource"); 
String pr1 = UserFunction.getPromptFunction("p3" "resource"); 

和jsp頁面使用它作爲<%= PR1%>

所以我想用數組一樣

String[] pr = UserFunction.getPromptFunction('"p1","p2","p3"' "resource") 

所以我如何能夠做到這一點,並告訴如何在jsp頁面中使用它。

+0

這實際上是不SAX解析你在幹什麼。 –

+0

對不起,但我想知道,我怎麼能夠從數組列表中檢索XML文本並將其打印在jsp頁面中 – deepak

回答

1

你可以像下面這樣做

public String[] getPromptFunction(String promptTag,String langMode) 
    { 
     String temp[] = new String[promptObject.size()];   
     List<PromptBean> promptObject=xrpObject.load(langMode); 
     int i = 0; 
     for (Iterator<PromptBean> iterator = promptObject.iterator(); iterator.hasNext();) { 
     PromptBean promptBean= (PromptBean)iterator.next();    
     if(promptBean.getId().equalsIgnoreCase(promptTag)){ 
      temp[i] = StringEscapeUtils.escapeXml(promptBean.getPrompt()); 
     } 
     i++; 
     } 
     return temp; 
    }