用特殊字符读取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
中的特殊字符,代表字符引用的开头。如果你想使用符号,你必须引用它使用&
到因此,你的XML文件看起来应该像下面这样:
<Feeds>
<item>
<name>Example-Name</name>
<url>http://someurl.com/process.php?appuser=[USER]&auth=[KEY]</url>
<frequency>5</frequency>
</item>
</Feeds>
谢谢!这绝对是诀窍。没有完全意识到它试图解析出实际的内容。 – Jonny