XmlReader AppendChild不附加相同的子值

时间:2009-03-18 16:31:53

标签: c# xml

XmlElement updateRecipient = doc.CreateElement("UpdateRecipient");
                XmlElement email = doc.CreateElement("EMAIL");
                XmlElement listID = doc.CreateElement("LIST_ID");
                XmlElement column = doc.CreateElement("COLUMN");
                XmlElement name = doc.CreateElement("NAME");
                XmlElement value = doc.CreateElement("VALUE")

                root.AppendChild(body);
                body.AppendChild(updateRecipient);
                updateRecipient.AppendChild(listID);
                listID.InnerText = _listID;
                updateRecipient.AppendChild(email);
                email.InnerText = _email;
                updateRecipient.AppendChild(column);
                column.AppendChild(name);
                name.InnerText = _columnNameFrequency;
                column.AppendChild(value);
                value.InnerText = _actionID.ToString();
                updateRecipient.AppendChild(column);
                column.AppendChild(name);
                name.InnerText = _columnNameStatus;
                column.AppendChild(value);

出于某种原因,我最终只在updateRecipient元素下获得了一个子列而不是两个子列。我需要在UpdateRecipient Node下显示这两个:

<UpdateRecipient>
<LIST_ID>85628</LIST_ID>
<EMAIL>somebody@domain.com</EMAIL>
<COLUMN>
<NAME>Frequency</NAME>
<VALUE>1</VALUE>
</COLUMN>
<COLUMN>
<NAME>Status</NAME>
<VALUE>Opted In</VALUE>
</COLUMN>
</UpdateRecipient>

但到目前为止我只得到一个:

<UpdateRecipient>
<LIST_ID>85628</LIST_ID>
<EMAIL>somebody@domain.com</EMAIL>
<COLUMN>
<NAME>Status</NAME>
<VALUE>Opted In</VALUE>
</COLUMN>
</UpdateRecipient>

当它命中第一个AppendChild(列)然后命名和值时,频率显示find但后来又被状态覆盖,我希望它只是追加一个新的,我不知道为什么它会覆盖而不是添加另一个标签。

3 个答案:

答案 0 :(得分:4)

问题是您正在重复使用“列”,“名称”和“ “价值”变量。您需要为第二组创建新的XmlElements。

答案 1 :(得分:0)

我不知道,但尝试以相反的顺序进行。这就是我一直以来所做的。不要将updateRecipient附加到root,直到你完成它。

答案 2 :(得分:0)

以为你可以重复使用现有元素,但你不能......