You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用C# XDocument.Parse解析XML字符串遇XmlException错误求助

问题解决:XML解析报错“An error occurred while parsing EntityName”

错误原因

你的XML字符串里存在未按规范转义的特殊字符&。XML要求&必须转义为&,否则解析器会把&当成实体引用的起始标识,但后续的&并不是合法的实体名称,因此触发解析错误。

看你提供的XML中ng-if属性值:

ng-if="this.generatedForm.result.$invalid && this.generatedForm.result.$dirty"

这里的&&就是未转义的&,这是报错的核心原因。

解决方案

1. 修正XML字符串

把所有未转义的&替换为&,修正后的完整XML如下:

<form name="generatedForm" role="form">
  <div class="form-group">
    <label for="result">
      Calculation Result
    </label>
    <input class="form-control" name="result" cam-variable-type="Long" cam-variable-name="result" type="text" />
    <div ng-if="this.generatedForm.result.$invalid &amp;&amp; this.generatedForm.result.$dirty" class="has-error">
      <div ng-show="this.generatedForm.result.$error.required" class="help-block">
        Required field
      </div>
      <div ng-show="this.generatedForm.result.$error.camVariableType" class="help-block">
        Only a long value is allowed
      </div>
    </div>
  </div>
  <div class="form-group">
    <label for="correcto">
      es correcto?
    </label>
    <input class="form-control" name="correcto" cam-business-key type="checkbox" />
    <div ng-if="this.generatedForm.correcto.$invalid &amp;&amp; this.generatedForm.correcto.$dirty" class="has-error">
      <div ng-show="this.generatedForm.correcto.$error.required" class="help-block">
        Required field
      </div>
      <div ng-show="this.generatedForm.correcto.$error.camVariableType" class="help-block">
        Only a boolean value is allowed
      </div>
    </div>
  </div>
</form>

2. 修正C#代码

你当前代码里的XDocument.Parse("XmlString")只是传入了占位符字符串,实际要传入修正后的XML内容,示例如下:

// 用逐字字符串保留XML格式,双引号用""转义
string correctedXml = @"<form name=""generatedForm"" role=""form"">
  <div class=""form-group"">
    <label for=""result"">
      Calculation Result
    </label>
    <input class=""form-control"" name=""result"" cam-variable-type=""Long"" cam-variable-name=""result"" type=""text"" />
    <div ng-if=""this.generatedForm.result.$invalid &amp;&amp; this.generatedForm.result.$dirty"" class=""has-error"">
      <div ng-show=""this.generatedForm.result.$error.required"" class=""help-block"">
        Required field
      </div>
      <div ng-show=""this.generatedForm.result.$error.camVariableType"" class=""help-block"">
        Only a long value is allowed
      </div>
    </div>
  </div>
  <div class=""form-group"">
    <label for=""correcto"">
      es correcto?
    </label>
    <input class=""form-control"" name=""correcto"" cam-business-key type=""checkbox"" />
    <div ng-if=""this.generatedForm.correcto.$invalid &amp;&amp; this.generatedForm.correcto.$dirty"" class=""has-error"">
      <div ng-show=""this.generatedForm.correcto.$error.required"" class=""help-block"">
        Required field
      </div>
      <div ng-show=""this.generatedForm.correcto.$error.camVariableType"" class=""help-block"">
        Only a boolean value is allowed
      </div>
    </div>
  </div>
</form>";

var x = XDocument.Parse(correctedXml);

内容的提问来源于stack exchange,提问作者Ivalberto

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 11:54:31