2012-08-03 38 views
1

我使用loadFromXML方法的java.util.Properties類來解析包含一些應用程序參數的XML文件。其中一個參數的值是一個HTML字符串,如下所示:XML屬性文件包含帶標記的值

<?xml version="1.0" encoding="UTF-8" ?> 
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd"> 
<properties> 
    <entry key="THREAD_COUNT">4</entry> 
    <entry key="SENDER_EMAIL">[email protected]</entry> 
    <entry key="EMAIL_SUBJECT">SAMPLE SUBJECT</entry> 
    <entry key="EMAIL_BODY"><span style='font-family : Monotype Corsiva ; font-size:14pt'>SAMPLE TEXT</span></entry> 
</properties> 

當我有這樣的一個值,loadFromXML方法拋出以下異常:

java.util.InvalidPropertiesFormatException: org.xml.sax.SAXParseException: Element type "span" must be declared. 
    at java.util.XMLUtils.load(XMLUtils.java:59) 
    at java.util.Properties.loadFromXML(Properties.java:852) 
    at com.test.mail.ConfigReader.<init>(ConfigReader.java:27) 
    at com.test.mail.ConfigReader.getInstance(ConfigReader.java:43) 
    at com.test.mail.SendMail.readParameters(SendMail.java:64) 
    at com.test.mail.SendMail.startJob(SendMail.java:29) 
    at com.test.mail.SendMail.main(SendMail.java:24) 

有沒有使用這樣的值的方式在XML屬性文件中?

回答

5

使用CDATA節的XML中,將其標記爲數據,否則將被解析爲您的XML的一部分:

http://www.w3schools.com/xml/xml_cdata.asp

<?xml version="1.0" encoding="UTF-8" ?> 
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd"> 
<properties> 
    <entry key="THREAD_COUNT">4</entry> 
    <entry key="SENDER_EMAIL">[email protected]</entry> 
    <entry key="EMAIL_SUBJECT">SAMPLE SUBJECT</entry> 
    <entry key="EMAIL_BODY"><![CDATA[<span style='font-family : Monotype Corsiva ; font-size:14pt'>SAMPLE TEXT</span>]]></entry> 
</properties>