2013-09-01 29 views
2

我正在創建一個Java應用程序。在第一次運行時,我的應用程序將下載所需的Java庫和一些圖像。我的朋友幫助我管理我的文件服務器。他創建了一個XML文件,其中包含有關所需文件的所有信息。Java - 如何在Web上獲取XML內容

下面是XML文件

<Files> 
     <Url>lib/lwjgl.jar</Url> 
     <DareCreated>2013-04-30T09:25:54.000Z</DateCreated> 
     <Size>2389</Size> 
    </Files> 

    <Files> 
     <Url>img/Icon.png</Url> 
     <DateCreated>2013-05-21T12:26:15.000Z</DateCreated> 
     <Size>56</Size> 
    </Files> 

的一些部分我想我的Java應用程序來獲取XML文件的內容,例如<Url>XXX/XXX.jar</Url>。然後,我的應用程序將從我的Web服務器下載文件。

我的文件的Url將是這樣的,www.xxx.com/XML/ + XML文件中的<Url>X</Url>的內容。

例如,www.xxx.com/XML/img/Icon.png。如何獲取「Url」的內容然後將其轉換爲字符串(或Url),以便我的下載器將其下載?這個XML文件非常長,它包含了超過100個文件來下載。

在先進的感謝。

+0

嘗試使用Google搜索['java jaxb simple example'](https://www.google.com/search?q=java+jaxb+simple+example&ie=UTF-8&oe=UTF-8&hl=zh-CN&client=safari) – jahroy

回答

0

我認爲你需要一個XML解析器

前。 JDOM

JDOM很簡單地說就是一個XML文檔的Java表示。 JDOM 提供了一種方法來表示該文檔,以便輕鬆高效地閱讀,操作和書寫。它有一個簡單的API,是一個輕量且快速的,並且爲Java程序員優化的。它是 DOM和SAX的替代品,儘管它與 DOM和SAX都很好地結合在一起。

,有很多人。只是檢查這是你需要達到你想要的。

+0

I將嘗試此.. Ty – Jeremy

+0

請upvote並接受答案,如果它幫助你。 –

0

我相信,你一定知道OXM(對象XML映射)。有很多方法可以實現你想要的。

我會建議你最簡單的一個。請你的朋友爲包含所有URL的XML文件生成一個XSD(XML模式定義)。

然後使用JAXBMarshallerXMLBeans編寫一個簡單的java代碼來封送上面添加的XML文件。

您將獲得與此XML相對應的java對象以及所有標記作爲java對象的屬性。

之後,你可以簡單地使用get方法通過剛剛通過屬性:)

編輯列表迭代獲得URL變量的值:您還可以使用SAX解析器或DOM操作提取值,但我發現OXM更好。

希望這會有所幫助。

+1

我會讓他生成一個XSD文件,Ty – Jeremy

+0

這會讓你的生活變得非常簡單:) – dharam

0

我改變的XML,以便更好的結構:

<xml version="1.0"?> 
     <Files> 
     <File> 
      <Url>lib/lwjgl.jar</Url> 
      <DateCreated>2013-04-30T09:25:54.000Z</DateCreated> 
      <Size>2389</Size> 
     </File> 
     <File> 
      <Url>img/Icon.png</Url> 
      <DateCreated>2013-05-21T12:26:15.000Z</DateCreated> 
      <Size>56</Size> 
     </File> 
     </Files> 

這可以關聯到像下面的一個xsd:

<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified"  xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
     <xs:element name="Files"> 
     <xs:complexType> 
      <xs:sequence> 
      <xs:element name="File" maxOccurs="unbounded" minOccurs="0"> 
       <xs:complexType> 
       <xs:sequence> 
        <xs:element type="xs:string" name="Url"/> 
        <xs:element type="xs:dateTime" name="DateCreated"/> 
        <xs:element type="xs:short" name="Size"/> 
       </xs:sequence> 
       </xs:complexType> 
      </xs:element> 
      </xs:sequence> 
     </xs:complexType> 
     </xs:element> 
    </xs:schema> 

然後你就可以,還有許多的可能性,生成JAXB類從xsd中,將它們添加到你的類路徑中。 這樣做你可以marshall/unmarshall提取網址的XML。
使用JAXB一個很簡單的例子是在這裏:
http://www.javacodegeeks.com/2011/02/jaxb-generate-xml-xsd.html

描述了在主兩班代(容易出現的情況),並使用()。