2016-04-27 116 views
1

我試圖創建一個引擎,它存儲了幾個對RSS提要的引用,以便自己編譯它們,然後創建我自己的自定義提要。我將feed數據保存在一個xml文件中,然後在我的java引擎中讀取並將URL存儲爲一個簡單的字符串。用特殊字符讀取java中的xml文件

這裏是我的xml文件:

<Feeds> 
<item> 
    <name>Example-Name</name> 
    <url>http://someurl.com/process.php?appuser=[USER]&auth=[KEY]</url> 
    <frequency>5</frequency> 
</item> 
</Feeds> 

我看了這個文件與此:

try { 
     DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); 
     DocumentBuilder dBuilder; 

     dBuilder = dbFactory.newDocumentBuilder(); 
     Document doc = dBuilder.parse(xmlFile); 
     doc.getDocumentElement().normalize(); 

     NodeList list = doc.getElementsByTagName("item"); 

     for (int i = 0; i < list.getLength(); i++) { 
      Node n = list.item(i); 
      Element e = (Element) n; 
      String fn = e.getElementsByTagName("name").item(0).getTextContent(); 
      String fu = e.getElementsByTagName("url").item(0).getTextContent(); 
      int ff = Integer.parseInt(e.getElementsByTagName("frequency").item(0).getTextContent()); 
      addFeed(fn, fu, ff); 
     } 
    } catch (ParserConfigurationException e1) { 
     System.out.println("Parse Error"); 
     // TODO Auto-generated catch block 
     e1.printStackTrace(); 
    } catch (SAXException e1) { 
     System.out.println("SAX Error"); 
     // TODO Auto-generated catch block 
     e1.printStackTrace(); 
    } catch (IOException e1) { 
     System.out.println("IO Error"); 
     // TODO Auto-generated catch block 
     e1.printStackTrace(); 
    } 

而且我得到這個錯誤:

[Fatal Error] Feeds.xml:15:75: The reference to entity "auth" must end with the ';' delimiter. 
SAX Error 
org.xml.sax.SAXParseException; systemId: file:/C:/Feed%20Engine/Feeds.xml; lineNumber: 15; columnNumber: 75; The reference to entity "auth" must end with the ';' delimiter. 
at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(Unknown Source) 
at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(Unknown Source) 
at javax.xml.parsers.DocumentBuilder.parse(Unknown Source) 
at main.FeedFetcher.<init>(FeedFetcher.java:28) 
at main.FEMain.main(FEMain.java:10) 

最終似乎當讀取XML文件,「auth」正在被選爲關鍵字。有沒有一種方法,我在XML文件格式或解析它的不同,所以我沒有收到錯誤?

回答

1

&XML中的特殊字符,代表字符引用的開頭。如果你想使用符號,你必須引用它使用&amp;

到因此,你的XML文件看起來應該像下面這樣:

<Feeds> 
<item> 
    <name>Example-Name</name> 
    <url>http://someurl.com/process.php?appuser=[USER]&amp;auth=[KEY]</url> 
    <frequency>5</frequency> 
</item> 
</Feeds> 
+0

謝謝!這絕對是訣竅。沒有完全意識到它試圖解析出實際的內容。 – Jonny