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

C#创建指定结构XML时报错:节点类型无效问题咨询

解决XML节点添加报错的问题

问题根源

你碰到的这个错误,核心原因有两个:

  1. JsonConvert.DeserializeXmlNode生成的XmlNode属于另一个独立的XmlDocument实例,直接把它加到当前的xmlDoc里,会因为节点的文档上下文不匹配,触发类型错误。
  2. 你反序列化出来的节点外层是<program>,但实际需要添加到<programs>下的是它内部的<Program>节点,直接加外层节点也不符合你想要的最终XML结构。

修正后的代码

XmlDocument xmlDoc = new XmlDocument();
XmlNode rootNode = xmlDoc.CreateNode(XmlNodeType.Element, "programs", null);
xmlDoc.AppendChild(rootNode);

foreach (dynamic item in access)
{
    // 反序列化得到带<program>根节点的临时XmlNode
    XmlNode tempNode = JsonConvert.DeserializeXmlNode(item.ToString(), "program");
    // 提取实际需要的<Program>子节点
    XmlNode programNode = tempNode.FirstChild;
    // 将节点导入当前xmlDoc的上下文,true表示深导入(包含所有子节点)
    XmlNode importedNode = xmlDoc.ImportNode(programNode, true);
    // 把导入后的节点添加到根节点下
    rootNode.AppendChild(importedNode);
}

额外提示

  • 注意XML节点的大小写:你的目标结构里是<Program>和<programs>,要确保反序列化生成的节点大小写和目标一致,避免出现结构不匹配的问题。
  • 如果tempNode.FirstChild不是你要的<Program>节点,可以改用tempNode.SelectSingleNode("Program")来精准获取,保证拿到正确的节点。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:10:16