通过 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。
- 如何正确发送属性?
- 如何在 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
通常 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。
- 如何正确发送属性?
- 如何在 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