gpt4 book ai didi

c# - 从字典创建 XML 文档的问题

转载 作者:太空宇宙 更新时间:2023-11-03 20:02:53 24 4
gpt4 key购买 nike

我的目的是遍历我可爱的字典(键和值都是字符串)并从中创建一个 xml 文件。

我在最后一行收到错误(保存 xml)。

"InvalidOperationException was unhandled Token EndDocument in state Document would result in an invalid XML document."

使用断点查看它似乎在到达结尾时,只完成了初始位(在 for each 循环之外)..

我一半是在问我犯了什么愚蠢的错误,一半是在问是否有更 Eloquent 方法来做到这一点。

抱歉,如果我遗漏了什么,请告诉我,我会补充。

XDocument xData = new XDocument(
new XDeclaration("1.0", "utf-8", "yes"));

foreach (KeyValuePair<string, string> kvp in inputDictionary)
{
xData.Element(valuesName).Add(
new XElement(valuesName,
new XAttribute("key", kvp.Key),
new XAttribute("value", kvp.Value)));
}

xData.Save("C:\\xData.xml");

最佳答案

目前您直接向文档中添加多个元素 - 因此您最终会没有根元素(如果字典为空)或可能 < em>多个 根元素(如果字典中有多个条目)。你想要一个根元素,然后是你的字典元素。此外,您试图在不添加任何内容的情况下找到一个名为 valuesName 的元素,因此如果有任何内容,您实际上会得到一个 NullReferenceException字典条目。

幸运的是,它比您做的更容易,因为您只需使用 LINQ 将您的字典转换为一系列元素并将其放入文档中。

var doc = new XDocument(
new XDeclaration("1.0", "utf-8", "yes"),
new XElement("root",
inputDictionary.Select(kvp => new XElement(valuesName,
new XAttribute("key", kvp.Key),
new XAttribute("value", kvp.Value)))));
doc.Save(@"c:\data.xml");

完整的示例应用:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Xml.Linq;

class Test
{
static void Main()
{
XName valuesName = "entry";
var dictionary = new Dictionary<string, string>
{
{ "A", "B" },
{ "Foo", "Bar" }
};
var doc = new XDocument(
new XDeclaration("1.0", "utf-8", "yes"),
new XElement("root",
dictionary.Select(kvp => new XElement(valuesName,
new XAttribute("key", kvp.Key),
new XAttribute("value", kvp.Value)))));
doc.Save("test.xml");
}
}

输出(不保证条目顺序):

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<root>
<entry key="A" value="B" />
<entry key="Foo" value="Bar" />
</root>

对此的另一种分割是:

var elements = inputDictionary.Select(kvp => new XElement(valuesName,
new XAttribute("key", kvp.Key),
new XAttribute("value", kvp.Value)));
var doc = new XDocument(
new XDeclaration("1.0", "utf-8", "yes"),
new XElement("root", elements));

您可能会发现这更易于阅读。

关于c# - 从字典创建 XML 文档的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26144617/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com