通过 ajax 将 XML 属性与元素一起发送到 C# 控制器方法并解析以保存

Send XML attributes along with Elements via ajax to C# controller method and parse to save

通常 XML 要在网页上编辑的元素作为输入名称发送 示例:

然后在 C# 控制器方法中:

List<string> keys = Request.Form.Keys.Cast<string>().Where(item => item[0] == '/' && item[1] == '/').ToList();
foreach (var key in keys)
{
   var item = xDoc.SelectSingleNode(key, manager);
   if (item != null)
      item.InnerText = Request.Form[key];
   else
       throw new InvalidOperationException("Could not decode parameter with key " + key + " and value " + Request.Form[key]);
}

通常 XML 元素在密钥集合的 Request.Form 部分发送,因此 1 个关键示例是:

"//IVS-NONINST-REC/IVS-NONINST-REC-REST[1]/IVS-SEC-DIAG-CDS[1]/IVS-SEC-DIAG-T[1]"

但是,我需要发送一些属性,以便对这些属性进行解析和保存。 我不确定如何“正确地”发送它们,如果我像

一样发送属性
"//IVS-NONINST-REC/IVS-NONINST-REC-REST[1]/IVS-SEC-DIAG-CDS[1]/IVS-SEC-DIAG-T[1]/IVS-SEC-DIAG"

代码循环命中抛出新的 InvalidOperationException。

  1. 如何正确发送属性?
  2. 如何在 C# 中正确解析属性以保存它们?

该元素的 XML 及其属性如下所示

<IVS-SEC-DIAG-T IVS-SEC-DIAG="C56.9" IVS-SEC-POA="">test</IVS-SEC-DIAG-T>

更新,完成xml(为简洁起见删除了一些)

 <IVS-NONINST-REC xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <IVS-NONINST-REC-KEY IVS-REC-TYP="2" IVS-TM-STAMP="210549" IVS-ADJ-KEY="5">    
    </IVS-NONINST-REC-KEY>
    <IVS-NONINST-REC-REST IVS-PAT-ID="333089302">
      <IVS-SEC-DIAG-CDS>
       <IVS-SEC-DIAG-T IVS-SEC-DIAG="C56.9" IVS-SEC-POA="">test</IVS-SEC-DIAG-T>
    </IVS-NONINST-REC-REST>
</IVS-NONINST-REC>

虽然我可以在 xDoc InnerHTML 中看到所有 xml 元素和属性,但 xDoc 认为没有属性 这是一个屏幕截图

您应该将 @ 添加到 xpath 中的属性名称。

//.../IVS-SEC-DIAG-T[1]/@IVS-SEC-DIAG