返回字符串数组代替字符串

时间:2012-10-15 10:49:38

标签: java xml arrays parsing

我有一个返回字符串类型值的类,我想返回一个String数组,所以请告诉我怎么能这样做

  1. 我有一个像resource.xml
  2. 这样的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页面中将其用作&lt;%= pr1%&gt;

    所以我想使用像

    这样的数组
    String[] pr = UserFunction.getPromptFunction('"p1","p2","p3"' "resource")
    

    所以我如何能够做到这一点,并告诉如何在jsp页面中使用它。

1 个答案:

答案 0 :(得分: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;
    }