Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/298.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# 如何使用XDocument动态生成XML文件?_C#_Linq To Xml_Xsd - Fatal编程技术网

C# 如何使用XDocument动态生成XML文件?

C# 如何使用XDocument动态生成XML文件?,c#,linq-to-xml,xsd,C#,Linq To Xml,Xsd,正如我在主题本身中所写,我如何才能做到这一点? 请注意,这样的解决方案并不合适,因为我希望通过运行动态创建子节点 new XDocument( new XElement("root", new XElement("someNode", "someValue") ) ) .Save("foo.xml"); 我想这在第一次就足够清楚了,但我会再写一遍: 我需要能够在运行时将子节点添加到给定的父节点,在我编写的当前语法中,这是静态生成的xml,它对我没有任何

正如我在主题本身中所写,我如何才能做到这一点?
请注意,这样的解决方案并不合适,因为我希望通过运行动态创建子节点

new XDocument(
    new XElement("root", 
        new XElement("someNode", "someValue")    
    )
)
.Save("foo.xml");
我想这在第一次就足够清楚了,但我会再写一遍:

我需要能够在运行时将子节点添加到给定的父节点,在我编写的当前语法中,这是静态生成的xml,它对我没有任何帮助,因为所有这些都是预先知道的,这与我的情况不同

使用Xdocument,您会怎么做呢?

非常简单

请相应地更新您的代码

XmlDocument xml = new XmlDocument();
XmlElement root = xml.CreateElement("children");
xml.AppendChild(root);

XmlComment comment = xml.CreateComment("Children below...");
root.AppendChild(comment);

for(int i = 1; i < 10; i++)
{
    XmlElement child = xml.CreateElement("child");
    child.SetAttribute("age", i.ToString());
    root.AppendChild(child);
}
string s = xml.OuterXml;
xmldocumentxml=newxmldocument();
xmlementroot=xml.CreateElement(“子项”);
AppendChild(根);
xmlcoment comment=xml.CreateComment(“下面的孩子…”);
AppendChild(注释);
对于(int i=1;i<10;i++)
{
xmlementchild=xml.CreateElement(“child”);
SetAttribute(“age”,i.ToString());
根.AppendChild(child);
}
字符串s=xml.OuterXml;

如果文档具有已定义的结构,并且应该用动态数据填充,则可以执行以下操作:

// Setup base structure:
var doc = new XDocument(root);
var root = new XElement("items");
doc.Add(root);

// Retrieve some runtime data:
var data = new[] { 1, 2, 3, 4, 5 };

// Generate the rest of the document based on runtime data:
root.Add(data.Select(x => new XElement("item", x)));

你尝试过什么吗?在我问之前,我已经尝试过了,有太多的xml方法让我感到困惑:
xmlWriter
Xpath
Xdocument
xmlDocument
这是什么动态的?新的XElement(“someNode”,“someValue”)因为还不知道,他需要至少框架出方法来实现动态值,这行代码中甚至不存在。您甚至不使用XDocument,这正是OP想要的。我想你不明白“动态”这个词的意思。到目前为止,你所说的都不是动态的。同意,但也可以这样做。值必须被替换,内容需要更改。您的解决方案仍然没有任何动态性。它甚至不接受任何输入或值。整个解决方案是静态的。在该解决方案中替换字符串值仍然不是动态的。