【问题标题】:Insert a RootNode in an XML using C# XmlDocument使用 C# XmlDocument 在 XML 中插入 RootNode
【发布时间】:2017-03-27 14:44:24
【问题描述】:

我有一个XML 格式的字符串,由不带RootNode 的a 返回,如下所示:

<Node1 Id = "1" Value = "a"/>
<Node2 Id = "2" Value = "b"/>
<Node3 Id = "3" Value = "c"/>

现在,我想要将返回的字符串嵌入到根节点中,例如

<XML>
   <Node1 .... />
   <Node2 .... />
</XML>

如何使用System.Xml 命名空间(XmlDocument,ecc..)来做到这一点?

我有以下代码:

XmlDocument xml = new XmlDocument(); 
xml.Loadxml(stringWithoutRoot); 

提前谢谢你。

编辑:好的抱歉我不清楚。我真正的问题是这个。我有很多方法实际上做同样的事情,唯一改变的是必须执行的存储过程的名称。因此,为了使代码更具可读性,我想要做的是只创建一个方法并将存储过程的名称作为其输入参数传递。我认为这更符合逻辑。

第二个问题:我注意到一些存储过程返回一个带有根节点的 xml,而另一些则没有,所以我的解决方案是也将 XML 作为输入参数传递。

调用示例,

executeSqlCommand(mySP, "<XML></XML>)

将存储过程的结果放在XML中,如下所示

<XML>resultFromSPWithoutRootNode</XML>

所以我需要这样的东西

string result = ..... // some operation in DB

if (!string.IsNullOrEmpty(rootXMl))   // where rootXML is my second parameter
{
    append the result to the root node rootXML
}

没有追加方式。

【问题讨论】:

  • 你的代码在哪里?
  • 我没有代码。我做什么: XmlDocument xml = new XmlDocument(); xml.Loadxml(stringWithoutRoot);我不知道如何将我的 sting 附加到根节点。

标签: c# xml


【解决方案1】:

也许是这样的?

XmlDocument xml = new XmlDocument();
string nodesString = "<node/>" ;
xml.LoadXml("<root>" + nodesString+ "</root>");

【讨论】:

  • 感谢 Jérôme 的提示。请查看我的编辑以更好地理解我的问题。我需要这样的东西: xml.LoadXml(rootNode); xml.Append(restOfXml)
【解决方案2】:

我会尝试使用XmlDocumentFragment,就像这里建议的那样:

Append XML string block to existing XmlDocument

谢谢

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-28
    • 1970-01-01
    • 1970-01-01
    • 2010-09-06
    • 2016-02-14
    • 1970-01-01
    • 2011-04-21
    • 2016-11-14
    相关资源
    最近更新 更多