鉴于:
public static final String XML_POLICY =
"<?xml version="1.0"?>"
+"<!DOCTYPE cross-domain-policy SYSTEM "/xml/dtds/cross-domain-policy.dtd">"
+ "<cross-domain-policy>"
+ "<allow-access-from domain="*" to-ports="*" />"
+ "</cross-domain-policy>";
我在
上遇到编译错误"<?xml version="1.0"?>"
它预示着“;
”。
和
+"<!DOCTYPE cross-domain-policy SYSTEM "/xml/dtds/cross-domain-policy.dtd">"
它说“找不到符号,符号:类xml和类dtds”
可能的原因是什么? IDE是Netbeans 6.8 Beta。
答案 0 :(得分:3)
你需要逃避双引号 - 它也不仅仅是第一行。 doctype和allow-access-from行也需要它。
// Reformatted slightly to avoid scrolling :)
public static final String XML_POLICY =
"<?xml version=\"1.0\"?>"
+ "<!DOCTYPE cross-domain-policy SYSTEM \"/xml/dtds/cross-domain-policy.dtd\">"
+ "<cross-domain-policy>"
+ "<allow-access-from domain=\"*\" to-ports=\"*\" />"
+ "</cross-domain-policy>";
另一种方法是在XML中使用单引号,这在大多数地方都很好,并使代码更易于阅读:
public static final String XML_POLICY =
"<?xml version='1.0'?>"
+"<!DOCTYPE cross-domain-policy SYSTEM '/xml/dtds/cross-domain-policy.dtd'>"
+ "<cross-domain-policy>"
+ "<allow-access-from domain='*' to-ports='*' />"
+ "</cross-domain-policy>";
请注意,没有关于此的Netbeans或XML特定内容。双引号用于表示字符串的开头和结尾,这就是为什么如果你想要一个字符串,你需要转义它。例如:
String x = "I said, \"Hello.\" The child laughed.";
Java中有各种其他转义序列 - 有关详细信息,请参阅section 3.10.6 of the language specification。
答案 1 :(得分:2)
你必须逃避“在字符串内部:
public static final String XML_POLICY =
"<?xml version=\"1.0\"?>" + // etc etc
答案 2 :(得分:2)
答案 3 :(得分:0)
我认为问题得到了很好的回答,但只是一个注释/提示:
由于语法高亮,文本的一部分应该有不同的颜色,表明它不是文字的一部分
Netbeans 必须启用语法高亮(默认?)。 Stackoverflow也有语法高亮,只需查看问题中的代码(上图)。