System.Xml.XmlException: 名稱不能以“;”字符(十六進制值 0x3B)開頭


在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 個預定義的實體引用:
&lt; < less than
&gt; > greater than
&amp; & ampersand
&apos; ' apostrophe
&quot; " quotation mark

注釋:在 XML 中,只有字符 "<" 和 "&" 確實是非法的。大於號是合法的,但是用實體引用來代替它是一個好習慣。    

所以只要把在*_APL.xml中不符合語法規定的字符用相關的實體替換了就行。

最后 HashMap<String,String> 轉化為 HashMap&lt;String, String&gt;  && 轉化為 &amp;&amp;

打包再看 BUILD SUCCESSFUL

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM