C# 忽略元素LINQ C中空属性的值#

C# 忽略元素LINQ C中空属性的值#,c#,xml,visual-studio,linq,C#,Xml,Visual Studio,Linq,我试图从XML文件中检索值,但发现一些值为空。 textBox6、textBox7、textBox14对应的元素属性值为空/空。错误消息为空引用错误未受影响。如何解决这个问题 private void DisplayFile(string path) { var doc = XDocument.Load(path); var ns = doc.Root.GetDefaultNamespace(); var conn = doc.Root.

我试图从XML文件中检索值,但发现一些值为空。
textBox6、textBox7、textBox14
对应的元素属性值为空/空。错误消息为
空引用错误未受影响
。如何解决这个问题

private void DisplayFile(string path)
    {

        var doc = XDocument.Load(path);
        var ns = doc.Root.GetDefaultNamespace();
        var conn = doc.Root.Element(ns + "connection");

        textBox1.Text = conn.Element(ns + "sourceId").Value;


        var doc1 = XDocument.Load(path);
        var ns1 = doc.Root.GetDefaultNamespace();         
        var conn1 = doc.Root.Element(ns1 + "connectionContext");


    }

如果给定元素不在XML
foo中,元素(“someNode”)
将返回null。当访问
.Value
时,您会得到一个NullReferenceException

为了避免此NullReferenceException,需要检查元素是否为null

contextType的示例:

更新:

尝试从根元素加载connectionContext节点。但此节点是源节点的子节点。您需要首先加载此节点:

var source = doc.Root.Element(ns + "source");
var conn1 = source.Element(ns + "connectionContext");

如果给定元素不在XML
foo中,元素(“someNode”)
将返回null。当访问
.Value
时,您会得到一个NullReferenceException

为了避免此NullReferenceException,需要检查元素是否为null

contextType的示例:

更新:

尝试从根元素加载connectionContext节点。但此节点是源节点的子节点。您需要首先加载此节点:

var source = doc.Root.Element(ns + "source");
var conn1 = source.Element(ns + "connectionContext");

我发现您的问题请尝试此操作(我使用字符串,因为我不想制作文本框)


问题是您在源代码中有connectionContext,但请尝试在根目录中查找它

我发现您的问题请尝试此操作(我使用字符串,因为我不想制作文本框)


问题是您在源代码中有connectionContext,但尝试在根目录中找到它,它在哪一行崩溃?@Arion:
如果元素中有任何属性值为空,那么它就崩溃了。为什么不检查(conn.element(ns+“sourceId”)!=null)?@Likurg:是否可以检查元素本身而不是检查每个属性值???@KarthikRANGARAJ查看Stefan的答案它在哪一行崩溃?@Arion:
如果元素中有任何属性值为空,那么它就崩溃了。为什么不检查(conn.element(ns+“sourceId”)!=null)?@Likurg:是否可以检查元素本身,而不是检查每个属性值???@KarthikRANGARAJ查看Stefan的答案看起来它应该对我有效,是否有断点被击中?@Stefan:此行出错,
var contextType=conn1.element(ns+“contextType”)``对象引用未设置为对象的实例
@KarthikRANGARAJ将代码放入if(conn1!=null)语句中。我想你应该找出conn1 Xelement为null的原因。@xeondev:error消失了,但我仍然无法获取值??看起来应该对我有用,是否遇到了断点?@Stefan:error在这一行,
var contextType=conn1.Element(ns+“contextType”)``对象引用未设置为对象的实例
@KarthikRANGARAJ将代码放入if(conn1!=null)语句中。我想你应该找出为什么conn1-xelement是空的。@xeondev:error没有了,但我仍然无法得到值???@KarthikRANGARAJ添加你应该检查所有元素,比如Stefan showyou@KarthikRANGARAJ添加您应该检查的所有元素,如Stefan向您显示
        var doc = XDocument.Load("C:\\Test\\stovfl.xml");
        var ns = doc.Root.GetDefaultNamespace();

        var conn = doc.Root.Element(ns + "connection");
        string s1 = conn.Element(ns + "sourceId").Value;
        string s2 = conn.Element(ns + "username").Value;

        var conn1 = doc.Root.Element("source");

        var conn2 = conn1.Element("connectionContext");
        string s6 = conn2.Element(ns + "organization").Value;
        string s7 = conn2.Element(ns + "field").Value;

        string s14 = conn2.Element(ns + "description").Value;
        string s15 = conn2.Element(ns + "contextType").Value;