我正在尝试使用我正在收集的数据创建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并根据我有多少图像创建节点。
感谢您的帮助和时间
答案 0 :(得分:2)
循环是你想要的方式。事实上,没有“无环路”的方法来实现这一目标。但是,您可以将循环伪装成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
来引用相应的图像对于每个节点)。