2014-02-18 59 views
0

新的發展舞臺,請忽略我的無知,如果我碰巧沒有任何意義解析XML文件......如何訪問和使用Java和JavaScript

我試圖訪問一個xml文件位於我的EJB目錄必須留在那裏,我需要解析它到一個JavaScript可訪問的對象,最好是JSON,動態操縱它使用Javascript/Angular ....

使用JBOSS,和文件的位置是東西像

/FOO-ejb/src/main/resources/Config.xml,顯然無法通過網絡訪問的,因爲它沒有駐留在Web服務器[R下OOT目錄,

Java是後端和我似乎無法找到任何其他方式來訪問此文件,並將其用於前端,

我地走向使用的方向的EJB內的服務訪問該文件,解析它,然後使用一個REST服務來服務對象到前端....或寫一個JSP文件中讀取,解析它等.... 是還有其他更好的解決方案嗎?

謝謝大家的時間!

回答

0

我想你想要做的是無法實現的,因爲這將意味着你會使用Javascript功能來訪問文件系統,這是不可能的,雖然HTML5提供了一些文件API,它可以工作,但不能訪問任何文件,在文件中系統。

所以我會說,你要的方向是最合適的,也許更容易,因爲即使你找到一種方法來在JavaScript中這樣做,它會依賴瀏覽器或一些奇怪的解決方法,可以被破壞在未來的瀏覽器版本中。

我使用的Apache阿布德拉在Servlet過去解析XML RSS Feed並將其轉換成JSON。阿布德拉擅長這一點,併爲我完美工作。獲得JSON對象後我不得不將其發送到響應和我使用AJAX調用這個servlet來獲得JSON對象的客戶端。

的代碼是這樣的:

try { 

    PrintWriter result = response.getWriter(); 

    // Creates Abdera object and client to process the request. 
    Abdera abderaObj = new Abdera(); 
    AbderaClient client = new AbderaClient(abderaObj); 

    AbderaClient.registerTrustManager(); // For SSL connections. 

    // Sent the HTTP request of the ATOM Feed through AbderaClient. 
    ClientResponse resp = client.get("http://url/to/your/feed"); 

    // if the response was OK... 
    if (resp.getType() == ResponseType.SUCCESS) { 
     // We get the document as a Feed 
     Document<Feed> doc = resp.getDocument(); 

     // Creates a JSON writer to convert the ATOM Feed 
     Writer json = abderaObj.getWriterFactory().getWriter("json"); 

     // Converts the (XML) ATOM Feed into JSON object 
     doc.writeTo(json, result); 
    } 

} catch (Exception ex) { 
    ex.printStackTrace(System.out); 
}