向父节点添加多个子节点

本文关键字:子节点 添加 父节点 | 更新日期: 2023-09-27 17:50:09

我正在尝试创建一个XML文件与我收集的数据,但对于一个特定的我需要多个子标签生成

所以我希望有这样的东西:-

<Feedbacks>
   <Feedback>
     <Name></Name>
     <Surname></Surname>
     <Images>
       <Image></Image>
       <Image></Image>
       <Image></Image>
     </Images>
   </Feedback>
</Feedbacks>

对不起,我不知道如何粘贴正确的XML文件在这里,但我认为你得到的想法。此刻,我有这段代码正在工作:-

    private static void CreateFeedbackXMLFile()
    {
        XmlDocument doc = new XmlDocument();
        XmlNode docNode = doc.CreateXmlDeclaration("1.0", "UTF-8", null);
        doc.AppendChild(docNode);
        XmlNode Node = doc.CreateElement("Feedbacks");
        doc.AppendChild(Node);
        string fileName = "Feedback.xml";
        string filePath = Properties.Settings.Default.DefaultFolder + "''" + fileName;
        doc.Save(filePath);
    }
    public static void InsertFeedback(Feedback feedback)
    {
        CreateFeedbackXMLFile();
        string filePath = Properties.Settings.Default.DefaultFolder + "''Feedback.xml" ;
        XDocument xmlDoc = XDocument.Load(filePath);
        XElement XParentElement = new XElement("Feedback");
        InsertIntoXMLDoc(feedback, filePath, xmlDoc);
    }

    private static void InsertIntoXMLDoc(Feedback feedback, string filePath, XDocument xmlDoc)
    {
        xmlDoc.Element("Feedbacks").Add(new XElement("Feedback",
                                        new XElement("Name", feedback.Name),
                                        new XElement("Surname", feedback.Surname),
                                        new XElement("Email", feedback.Email),
                                        new XElement("Website", feedback.Website),
                                        new XElement("Suggestion", feedback.Suggestion),
                                        new XElement("Error", feedback.Error),
                                        new XElement("MailingList", feedback.MailingList),
                                        new XElement("Comments", feedback.Comments)
                            ));
        }
        xmlDoc.Save(filePath);
    }

现在我需要循环遍历imageList并根据我有多少张图片创建节点。

感谢您的帮助和时间

向父节点添加多个子节点

循环是您尝试的方法。事实上,没有"无循环"的方法来实现这一点。但是,您可以将循环伪装成LINQ查询,使用如下所示:

xmlDoc.Element("Feedbacks").Add(
    /* All the elements before your image list */
    XElement("images", 
        from img in myImageList select new XElement(...)
    )
    /* All the elements after your image list, preceeded by a comma */
);

当然,您需要将myImageList替换为实际的图像集合。注意,如果您有一个ImageList控件,实际收集的不是控件本身,而是它的Images属性。

此外,在...上,您需要放置用于从映像创建每个节点的任何逻辑(使用自动类型化的本地变量img为每个节点引用适当的映像)。