簡體   English   中英

給定編碼中的無效字符

[英]Invalid character in the given encoding

XmlDocument oXmlDoc = new XmlDocument();

try
{
    oXmlDoc.Load(filePath);
}
catch (Exception ex)
{
    // Log Error Here
    try
    {
        Encoding enc = Encoding.GetEncoding("iso-8859-1");
        StreamReader sr = new StreamReader(filePath, enc);
        String response = sr.ReadToEnd();
        oXmlDoc.LoadXml(response);
    }
    catch (Exception innerException)
    {
        // Log Error Here
        return false;
    }
}

我從第三方獲得了xml文件,該文件還包含xml聲明后的文檔類型定義文件。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE SoccerMatchPlus SYSTEM "SoccerMatchPlus.dtd">
<SoccerMatchPlus matchid="33226">
<Booking id="13642055" time="47">
<Player id="370927">
<Name firstName="Lasse" initials="L" lastName="Nielsen">L Nielsen</Name>
</Player>
<Team id="26415" name="AæB" homeOrAway="Home"/>
</Booking>
</SoccerMatchPlus>

如果我解析給定編碼中的無效字符的文件。 第102行,位置56。如果我捕獲到異常並重試解析文件,那么我又遇到了另一個問題,即文件解析,但是

我收到錯誤“找不到文件C:\\ Windows \\ system32 \\ SoccerMatchPlus.dtd”。

第三方在根元素之前添加了名為SoccerMatchPlus.dtd的文檔類型定義文件。

對於Load方法,解析器從xml文件也存在的位置加載文件。

我將SoccerMatchPlus.dtd放置在xml文件所在的其他位置,可以在運行時從指定位置加載SoccerMatchPlus.dtd文件,還是可以告訴我加載包含無效字符數據的xml文件的更好方法?

使用XmlDocument類的XmlResolver屬性禁用DTD處理。

XmlDocument oXmlDoc = new XmlDocument();
oXmlDoc.XmlResolver = null;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM