2

ここでエラー メッセージが表示されるのはなぜですか: Doubled Attribute? これは、同じ名前と値を持つ属性が複数あることを意味していると思います。

 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);

すべてのステップで、この 2 つの新しい属性が生成され、親ノードに追加されます。属性名が異なる必要があるため、問題はここにあると確信しています。Enterprise Architect アドインでエラーが発生します。新しく生成された属性の名前が異なる可能性はありますか?

4

2 に答える 2

3

Runリストが次のような場合:

"foo": "bar"
"foo2": "bar2"

あなたはそのようなことをしています:

<ResourceAttribute name="foo" value="bar" name="foo2" value="bar2" />

これは、属性が 2 回出現するため、実際には違法です...

あなたは何をしようとしているのですか?

于 2013-09-17T15:26:32.167 に答える
2

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));
于 2013-09-17T15:26:00.177 に答える