我想將XML數據轉換爲字典。我遇到了相同節點名稱的問題。 C#.Net 3.5嵌套XML到字典
示例XML =問題是我無法控制這一點。我只需要處理它。
<?xml version="1.0" encoding="utf-8"?>
<Root>
<a1>val1</a1>
<a2>val2</a2>
<Parameter>
<ParameterName>param1</ParameterName>
<ParameterValue>paramval1</ParameterValue>
</Parameter>
<Parameter>
<ParameterName>param2</ParameterName>
<ParameterValue>paramval2</ParameterValue>
</Parameter>
</Root>
我嘗試:
XMLStream.Position = 0;
XElement xmlDetails2 = XElement.Load(new System.IO.StreamReader(XMLStream));
var x = xmlDetails2.Elements().ToDictionary(
e => e.Name.LocalName,
e => e.Elements()
.ToDictionary(
f => f.Name.LocalName,
f => f.Value));
錯誤我收到(這使得課程的意義上):
An item with the same key has already been added.
預期結果(從示例XML):
a1 => val1
a2 => val2
param1 => paramval1
param2 => paramval2
...
我根據@ L.B的建議創建了我自己的。這不是最好的解決方案,但它現在起作用。
public void XMLTODictionary(XElement xmlDetails, ref Dictionary<string, string> dic)
{
foreach (var node in xmlDetails.Elements())
{
if (node.Name.LocalName.Equals("parameter", StringComparison.CurrentCultureIgnoreCase))
{
dic.Add(node.Element("ParameterName").Value, node.Element("ParameterValue").Value);
}
else
{
dic.Add(node.Name.LocalName, node.Value);
}
}
}
您預期的結果有時使用'name'和某個時候使用'value'這使得它很難處理xml..you首先應該收集所有名稱值對列表中的 – Anirudha