gpt4 book ai didi

c# - 访问可能存在也可能不存在的子元素时避免对象空引用异常

转载 作者:行者123 更新时间:2023-11-30 13:10:03 24 4
gpt4 key购买 nike

我有:包含一些元素的 XML。此 XML 中可能定义也可能不定义的子元素。需要在子元素确实存在的时候提取其值。

如何在不引发对象引用错误的情况下获取值?

例如:

 string sampleXML = "<Root><Tag1>tag1value</Tag1></Root>"; 

//Pass in <Tag2> and the code works:
//string sampleXML = "<Root><Tag1>tag1value</Tag1><Tag2>tag2Value</Tag2></Root>";
XDocument sampleDoc = XDocument.Parse(sampleXML);

//Below code is in another method, the 'sampleDoc' is passed in. I am hoping to change only this code
XElement sampleEl = sampleDoc.Root;
string tag1 = String.IsNullOrEmpty(sampleEl.Element("Tag1").Value) ? "" : sampleEl.Element("Tag1").Value;

//NullReferenceException:
//Object reference not set to an instance of an object.
string tag2 = String.IsNullOrEmpty(sampleEl.Element("Tag2").Value) ? "" : sampleEl.Element("Tag2").Value;

最佳答案

您可以使用 null-coalescing-operator快捷方式:

 string tag1= (string)sampleEl.Element("Tag1") ?? string.Empty;

这也利用了 LINQ to XML 允许转换操作获取元素值(在本例中转换为字符串)这一事实,但如果元素不存在则返回 null

关于c# - 访问可能存在也可能不存在的子元素时避免对象空引用异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5237977/

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