【问题标题】:How to embed xml file into java package and access it?如何将xml文件嵌入java包并访问它?
【发布时间】:2013-01-04 15:11:38
【问题描述】:

我有一个 XML 文件,其中包含在我的 C# 和 Java 版本的库中使用的数据。 理想情况下,我想将此 XML 文件嵌入到该库的包中。

我只需要从我的图书馆中访问它,所以我想知道:这可能吗?

【问题讨论】:

    标签: java xml package


    【解决方案1】:

    在 Java 中,您可以将 XML 文件本身包含在 JAR 文件中。然后你可以使用这样的东西:

    InputStream istream = getClass().getResourceAsStream("/resource/path/to/some.xml");
    

    并正常解析您的InputStream

    上面的getResourceAsStream() 查找当前类路径,其中将包括任何 JAR 文件的内容。

    【讨论】:

    • 这在 jarred 导出和项目参考中都非常有效!
    【解决方案2】:
    book.xml
    <book>
    <person>
      <first>Kiran</first>
      <last>Pai</last>
      <age>22</age>
    </person>
    <person>
      <first>Bill</first>
      <last>Gates</last>
      <age>46</age>
    </person>
    <person>
      <first>Steve</first>
      <last>Jobs</last>
      <age>40</age>
    </person>
    <person>
      <first>kunal</first>
      <last>kumar</last>
      <age>25</age>
    </person>
    </book>
    
    create a xml file book.xml
    made a jar file book.xml.jar and 
    palce it in war/web-inf/lib folder of your project..
     then it will work..
    import java.io.File;
    import java.io.IOException;
    import java.io.InputStream;
    
    import javax.servlet.http.*;
    import javax.xml.parsers.DocumentBuilder;
    import javax.xml.parsers.DocumentBuilderFactory;
    import javax.xml.parsers.ParserConfigurationException;
    
    
    
    
    import org.w3c.dom.Document;
    import org.w3c.dom.Element;
    import org.w3c.dom.Node;
    import org.w3c.dom.NodeList;
    import org.xml.sax.SAXException;
    import org.xml.sax.SAXParseException;
    
    @SuppressWarnings("serial")
    public class XMLParser extends HttpServlet {
        InputStream istream =getClass().getResourceAsStream("/book.xml");
        public void doGet(HttpServletRequest req, HttpServletResponse resp)throws IOException
        {
    
            DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance();
            DocumentBuilder docBuilder = null;
            try {
                docBuilder = docBuilderFactory.newDocumentBuilder();
            } catch (ParserConfigurationException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
          Document doc = null;
        try {
            doc = docBuilder.parse (istream);
        } catch (SAXException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    
            // normalize text representation
            doc.getDocumentElement ().normalize ();
            System.out.println ("Root element of the doc is " + 
                 doc.getDocumentElement().getNodeName());
    
    
            NodeList listOfPersons = doc.getElementsByTagName("person");
            int totalPersons = listOfPersons.getLength();
            System.out.println("Total no of people : " + totalPersons);
    
            for(int s=0; s<listOfPersons.getLength() ; s++){
    
    
                Node firstPersonNode = listOfPersons.item(s);
                if(firstPersonNode.getNodeType() == Node.ELEMENT_NODE){
    
    
                    Element firstPersonElement = (Element)firstPersonNode;
    
                    //-------
                    NodeList firstNameList = firstPersonElement.getElementsByTagName("first");
                    Element firstNameElement = (Element)firstNameList.item(0);
    
                    NodeList textFNList = firstNameElement.getChildNodes();
                    System.out.println("First Name : " + 
                           ((Node)textFNList.item(0)).getNodeValue().trim());
    
                    //-------
                    NodeList lastNameList = firstPersonElement.getElementsByTagName("last");
                    Element lastNameElement = (Element)lastNameList.item(0);
    
                    NodeList textLNList = lastNameElement.getChildNodes();
                    System.out.println("Last Name : " + 
                           ((Node)textLNList.item(0)).getNodeValue().trim());
    
                    //----
                    NodeList ageList = firstPersonElement.getElementsByTagName("age");
                    Element ageElement = (Element)ageList.item(0);
    
                    NodeList textAgeList = ageElement.getChildNodes();
                    System.out.println("Age : " + 
                           ((Node)textAgeList.item(0)).getNodeValue().trim());
    
                    //------
    
    
                }//end of if clause
    
    
            }//end of for loop with s var
    
        //System.exit (0);
    
    }//end of main
    
    
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-03
      相关资源
      最近更新 更多