用特殊字符读取java中的xml文件

问题描述:

我试图创建一个引擎,它存储了几个对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文件格式或解析它的不同,所以我没有收到错误?

&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