为什么我会收到错误消息:双重属性
本文关键字:属性 消息 错误 为什么 | 更新日期: 2023-09-27 18:31:43
为什么我在这里收到错误消息:双重属性?我想这意味着,有多个具有相同名称和值的属性。
XElement XMLRun = new XElement("RessourceAttribute");
foreach (var kvp in Run) //kvp = KeyValuePair<string,string> and Run = List<KeyValuePair<string, string>>
{
XAttribute aKey = new XAttribute("name", kvp.Key);
XAttribute aValue = new XAttribute("value", kvp.Value);
XMLRun.Add(aKey, aValue);
}
XMLE.Add(XMLRun);
在每个步骤中,都应该生成这两个新属性,然后将其添加到父节点上。我很确定问题出在这里,因为属性名称必须不同。错误发生在我的企业架构师加载项上。新生成的属性是否有可能具有不同的名称?
如果Run
列表是这样的:
"foo": "bar"
"foo2": "bar2"
你正在做这样的事情:
<ResourceAttribute name="foo" value="bar" name="foo2" value="bar2" />
这确实是非法的,因为一个属性出现了两次......
你想做什么?
发现如果Run
包含多个对,您将收到错误似乎相当微不足道。鉴于:
var Run = new Dictionary<string, string>
{
{ "1", "a" },
{ "2", "b" },
{ "3", "c" },
};
然后,您的代码将生成无效的 XML:
<ResourceAttribute name="1" value="a"
name="2" value="b"
name="3" value="c" />
如果没有一些示例 XML,很难说。也许你的意思是有很多<ResourceAttribute ...>
元素?
foreach (var pair in Run)
{
XMLE.Add(
new XElement("ResourceAttribute",
new XAttribute("key", pair.Key),
new XAttribute("value", pair.Value)
)
);
}
或者你的意思是将这些属性放在一个子元素上?
// replace original loop body
XMLRun.Add(new XElement("Run", XMLRunAttributeK, XMLRunAttributeV));
或者根据属性的名称从字面上命名属性?
// replace original loop body
XMLRun.Add(new XAttribute(pair.Key, pair.Value));