gpt4 book ai didi

c# - 在特定节点后插入 XElements

转载 作者:太空宇宙 更新时间:2023-11-03 10:31:36 25 4
gpt4 key购买 nike

  <user Id="4/30/2015 10:16:52 AM">
<city>Bathinda</city>
<city>Moga</city>
<city>Patiala</city>
<city>Amritsar</city>
<city>Faridkot</city>
</user>

为此,我想在具有 Id 属性值的用户节点下创建一个条目,我使用了以下代码:->

 xmlDocument.Elements("user")
.Where(x => (string)x.Attribute("Id") == usrCookieId)
.FirstOrDefault()
.AddAfterSelf(
new XElement("adults", drpAdult1.SelectedIndex),
new XElement("kids", Convert.ToInt32(drpKids.SelectedIndex)),
new XElement("infants", Convert.ToInt32(drpInfants.SelectedIndex)),
new XElement("startingDate", datePicker.Value),
new XElement("startingCity", drpStartingCity.SelectedValue ));

但错误是对象引用未设置为对象的实例。我怎样才能更正我上面的代码。谢谢!

最佳答案

您将收到对象引用异常,因为没有用户 ID 必须与 usrCookieId 中存在的值相匹配。您需要检查空值以避免此异常,方法是首先获取元素并在确认该用户节点是否存在后添加它:-

XElement userNode = xdoc.Descendants("user")
.FirstOrDefault(x => (string)x.Attribute("Id") == usrCookieId);

如果没有找到这样的用户节点,这将返回第一个匹配的 XElement 或 null,因此您可以简单地检查此条件并相应地添加:-

if (userNode != null)
{
userNode.AddAfterSelf(new XElement("adults", "3"),
new XElement("kids", 2),
new XElement("infants", 5),
new XElement("startingDate", "23/01.2015"),
new XElement("startingCity", "Delhi"));
}

此外,请注意,由于您打算在 user 下添加此新节点,因此您需要有一个根节点,因为当前 user 充当根节点,并且通过添加这个新节点会让你的 XML 格式不正确,它会抛出运行时异常所以最好有一个像这样的 Root 节点:-

 <Users>
<user Id="1">
<city>Bathinda</city>
<city>Moga</city>
<city>Patiala</city>
<city>Amritsar</city>
<city>Faridkot</city>
</user>
</Users>

关于c# - 在特定节点后插入 XElements,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29972412/

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