在xml文件中加入相關的代碼后打包時提示 “System.Xml.XmlException: 名稱不能以“;”字符(十六進制值 0x3B)開頭。 第 254 行,位置 31。”
找到當前行后當前代碼為:
for(int i=0;i<faces.length;++i) { }
其中出現了“<”,和xml中的語法沖突。應改為:
for(Face f:faces){
}
以上是2017年時候記錄的文字
//////////////////////////////////////////////////////////////////////////
// 2020/7/23
//////////////////////////////////////////////////////////////////////////
首先原諒自己的無知,其他今天又遇上一樣的問題,在思考、查找、改正后終於以正確的方式解決了此類問題,本想記錄一下,打開日志后才發現之前竟然有此條記錄,
上面的做法是取巧了,沒有解決真正問題,而引起此問題的原因是在打包ue4的 *_APL.xml中出現的類似HashMap<String,String>,中的< > &等特殊符號,只要想明白
這點就基本上找到了解決的辦法。現在去查下xml相關的文檔:
在 XML 中,一些字符擁有特殊的意義。 如果您把字符 "<" 放在 XML 元素中,會發生錯誤,這是因為解析器會把它當作新元素的開始。 這樣會產生 XML 錯誤: <message>if salary < 1000 then</message> 為了避免這個錯誤,請用實體引用來代替 "<" 字符: <message>if salary < 1000 then</message> 在 XML 中,有 5 個預定義的實體引用:
< | < | less than |
> | > | greater than |
& | & | ampersand |
' | ' | apostrophe |
" | " | quotation mark |
注釋:在 XML 中,只有字符 "<" 和 "&" 確實是非法的。大於號是合法的,但是用實體引用來代替它是一個好習慣。
所以只要把在*_APL.xml中不符合語法規定的字符用相關的實體替換了就行。
最后 HashMap<String,String> 轉化為 HashMap<String, String> && 轉化為 &&
打包再看 BUILD SUCCESSFUL