1. ホーム
  2. c#

[解決済み] EntityName のパース中にエラーが発生しました。1 行目、位置 844

2022-02-10 09:59:02

質問

以下のコードブロックから以下の例外が発生しました。

EntityName のパース中にエラーが発生しました。Line1, position 844.

テーブルから取得したデータのセットをデータセットにパースしようとしていました。

public DataSet BindMasterData(string xml)
        {
            DataSet ds = null;
            try
            {
                ds = new DataSet();
                TextReader txtReader = new StringReader(xml);
                XmlReader reader = new XmlTextReader(txtReader);
                ds.ReadXml(reader);
            }
            catch (Exception ex)
            {
                return new DataSet();
            }
            return ds;
        }

例外が発生する理由はわかったのですが、解決することができませんでした。この特定の状況では、(DBから取得される)文字列は、特殊文字(&)を含んでいます。それが例外の原因です。どうすれば解決できますか。この件に関して何か助けがあれば幸いです。

解決方法を教えてください。

置き換えるだけです。

XML要素では無効です。

"   "
'   '
<   &lt;
>   &gt;
&   &amp;


  public static string UnescapeXMLValue(string xmlString)
  {
    if (xmlString == null)
        throw new ArgumentNullException("xmlString")

    return xmlString.Replace("&apos;", "'").Replace("&quot;", "\"").Replace("&gt;", ">").Replace("&lt;", "<").Replace("&amp;", "&");
  }

 public static string EscapeXMLValue(string xmlString)
  {

    if (xmlString == null)
        throw new ArgumentNullException("xmlString")

    return xmlString.Replace("'","&apos;").Replace( "\"", "&quot;").Replace(">","&gt;").Replace( "<","&lt;").Replace( "&","&amp;");
  }