Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 需要将Xml数据附加到每个_C#_Xml - Fatal编程技术网

C# 需要将Xml数据附加到每个

C# 需要将Xml数据附加到每个,c#,xml,C#,Xml,我需要将xml数据附加到xmldocument对象。我的代码是这样的 <products> <product> <id>1</id> <price>15</price> </product> <product> <id>2</id> <price>30</price> </product> </products> publi

我需要将xml数据附加到xmldocument对象。我的代码是这样的

<products>
 <product>
<id>1</id>
<price>15</price>
</product>
 <product>
<id>2</id>
<price>30</price>
</product>
</products>
public xmlDocument Getdate(字符串s)
{ ...
回程
}
_prod=新的XmlDocument();
字符串[]sn={“第一”,“第二”}
foreach(序列号中的字符串s)
{
_prod=获取数据;
//需要代码将第二个循环添加到xmldocument对象“\u prod”
}
第一个xml数据是:

  <products>
  <product>
    <id>1</id>
    <price>15</price>
  </product>
 </products>
<products>
 <product>
<id>2</id>
<price>30</price>
</product>
</products>

1.
15
第二个xml数据是:

  <products>
  <product>
    <id>1</id>
    <price>15</price>
  </product>
 </products>
<products>
 <product>
<id>2</id>
<price>30</price>
</product>
</products>

2.
30
我希望最终的xml对象_prod(每个都在内部)如下所示

<products>
 <product>
<id>1</id>
<price>15</price>
</product>
 <product>
<id>2</id>
<price>30</price>
</product>
</products>

1.
15
2.
30

请建议一种可能的方法,假设您可以合并2个以上的XML文档:

_prod = new XmlDocument();
string[] sn = {"first", "second", "third"}
foreach(int i=0; i<sn.Length; i++)
{
    //build _prod based on the first XML
    if(i==0) _prod = Getdata(sn[i]);
    //then from next XMLs, add <product> nodes as child of _prod's <products>
    else
    {
        var _temp = Getdata(sn[i]);
        //select <products> node from _prod
        var product = _prod.SelectSingleNode("//products");
        //select <product> nodes to be appended to _prod
        var products = _temp.SelectNodes("//products/product");
        foreach(XmlNode p in products)
        {
            product.AppendChild(p);
        }
    }
}
\u prod=new XmlDocument();
字符串[]sn={“第一”、“第二”、“第三”}

foreach(inti=0;i是否可以改用linqtoxml,一次性构建整个XML? 大概是这样的:

var products = new XElement(
            "products",
            new string[] {"first", "second"}
                .Select(s => 
                    {
                        var data = GetData(s);
                        return new XElement(
                            "product",
                            new XElement("id", data.Id),
                            new XElement("price", data.Price));
                    }));
var xmlString = products.ToString();

但我需要将子节点附加到“_prod”对象,而不是“product”对象.
\u prod
对象保存整个XML文档。您希望在
\u prod
对象中附加子节点的位置?我想是在
\u prod
对象中的
/code>节点中。我不确定我是否遵循。在上面的代码中,您将子数据附加到var(产品)中。此对象最终将拥有整个xml文档。如果是,我希望整个文档位于“\u prod”中这是xml文档对象而不是xml节点。
product
\u prod
的一部分,添加到
product
将最终更改
\u prod
中存储的整个xml。!!非常感谢。!!可以。但是,我在根节点下有许多标记。将它们全部作为元素编写会很繁琐