Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何处理具有相同子代名称的XML?_C#_Xml_Linq To Xml - Fatal编程技术网

C# 如何处理具有相同子代名称的XML?

C# 如何处理具有相同子代名称的XML?,c#,xml,linq-to-xml,C#,Xml,Linq To Xml,我遇到了一个不幸的问题,根元素和子元素的名称是相同的,第二个元素有更多带有info的子元素。示例如下: <dispatchnames> <dispatchnames> <first>mike</first> <last>allison</last> </dispatchnames> <dispatchnames> <fir

我遇到了一个不幸的问题,根元素和子元素的名称是相同的,第二个元素有更多带有info的子元素。示例如下:

<dispatchnames>
    <dispatchnames>
        <first>mike</first>
        <last>allison</last>
    </dispatchnames>
    <dispatchnames> 
        <first>jeff</first>
        <last>ellington</last>
    </dispatchnames>
</dispatchnames>
我正在尝试用C编写代码,这是我当前的XML代码,但没有相同的名称:

XDocument xdoc = XDocument.Parse(xmlString);
IEnumerable<TrackData> data = from info in xdoc.Descendants("dispatchnames")
                              select new TrackData(
                                  info.Element("first").Value,
                                  info.Element("last").Value);
如何处理它?

添加where子句以验证该元素不是根元素。如果该元素实际上不是根,请检查info.Elementfirst!=而不是空值

另外,请注意,您发布的XML格式不正确。我使用如下结构的XML对此进行了测试:

<dispatchnames>
    <dispatchnames>
        <first>mike</first>
        <last>allison</last>
    </dispatchnames>
    <dispatchnames> 
        <first>jeff</first>
        <last>ellington</last>
    </dispatchnames>
</dispatchnames>
添加where子句以验证该元素不是根元素。如果该元素实际上不是根,请检查info.Elementfirst!=而不是空值

另外,请注意,您发布的XML格式不正确。我使用如下结构的XML对此进行了测试:

<dispatchnames>
    <dispatchnames>
        <first>mike</first>
        <last>allison</last>
    </dispatchnames>
    <dispatchnames> 
        <first>jeff</first>
        <last>ellington</last>
    </dispatchnames>
</dispatchnames>

很好,您用C显示了您尝试的代码。该代码工作得如何?它以什么方式失败?谢谢:,我得到了一个NullreferenceException-对象引用未设置为对象的实例。由于@mlorbetske,问题得以解决。很高兴您找到了解决方案。我假设错误是因为info.element第一次返回空引用,当时info是根节点;因此info.Elementfirst.Value试图提取null.Value。追踪此类问题的一个好方法是在取消引用之前测试中间结果:first=info.Elementfirst;如果首先选择first.Value;否则不打印元素;pseudocodecorrect,我得到的是null.values,注意到,谢谢!很好,您用C显示了您尝试的代码。该代码工作得如何?它以什么方式失败?谢谢:,我得到了一个NullreferenceException-对象引用未设置为对象的实例。由于@mlorbetske,问题得以解决。很高兴您找到了解决方案。我假设错误是因为info.element第一次返回空引用,当时info是根节点;因此info.Elementfirst.Value试图提取null.Value。追踪此类问题的一个好方法是在取消引用之前测试中间结果:first=info.Elementfirst;如果首先选择first.Value;否则不打印元素;pseudocodecorrect,我得到的是null.values,注意到,谢谢!谢谢,您编写的XML是正确的。您的解决方案非常有效!谢谢,您编写的XML是正确的。您的解决方案非常有效!