Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.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
获取xml节点值c# 让我们考虑下面的XML作为 <?xml version="1.0" encoding="UTF-8" ?> <response success="true"> <struct>value</struct> </response>_C#_.net_Xml - Fatal编程技术网

获取xml节点值c# 让我们考虑下面的XML作为 <?xml version="1.0" encoding="UTF-8" ?> <response success="true"> <struct>value</struct> </response>

获取xml节点值c# 让我们考虑下面的XML作为 <?xml version="1.0" encoding="UTF-8" ?> <response success="true"> <struct>value</struct> </response>,c#,.net,xml,C#,.net,Xml,我使用的代码是 foreach (XElement carselement in xdoc.Descendants("response")) { String value= carselement.Element("struct").Value; } 等待您的解决方案可能您的XML过于简化,如下所示: <!-- example --> <?xml version="1.0"

我使用的代码是

foreach (XElement carselement in xdoc.Descendants("response"))
                {
                  String  value= carselement.Element("struct").Value;

                }

等待您的解决方案

可能您的XML过于简化,如下所示:

<!-- example -->
<?xml version="1.0" encoding="UTF-8" ?>
<response success="true">
    <struct>value1</struct>
</response>
<response success="true">
    <struct>value2</struct>
</response>
<response success="false">
    <struct>value3</struct>
</response>

可能您的XML过于简化,如下所示:

<!-- example -->
<?xml version="1.0" encoding="UTF-8" ?>
<response success="true">
    <struct>value1</struct>
</response>
<response success="true">
    <struct>value2</struct>
</response>
<response success="false">
    <struct>value3</struct>
</response>
XML输入不符合预期(它是“空的”)并且异常发生在
XDocument.Load
(或
XDocument.Parse
)期间

最终,
xdoc
不包含预期的内容,“可疑”行甚至从未运行过;同样,此异常是在解析XML时引起的,而不是在枚举/导航XML时引起的。这个场景应该很容易用一个或堆栈跟踪来识别

下面是一些可以在LINQPad中作为C#语句运行的最小代码。我已经对它进行了修改,刚好可以很好地显示dump。请注意,它按预期运行

XML输入不符合预期(它是“空的”)并且异常发生在
XDocument.Load
(或
XDocument.Parse
)期间

最终,
xdoc
不包含预期的内容,“可疑”行甚至从未运行过;同样,此异常是在解析XML时引起的,而不是在枚举/导航XML时引起的。这个场景应该很容易用一个或堆栈跟踪来识别

下面是一些可以在LINQPad中作为C#语句运行的最小代码。我已经对它进行了修改,刚好可以很好地显示dump。请注意,它按预期运行


xdoc是如何加载的,它实际上包含什么?我可以想象它并不代表XML。@user2246674是的,这就是我面临的问题,我可以用其他方法来做吗way@GowthamanSS您的代码运行正常。@非常感谢您的支持,我错过了XDocument.parsexDoc
xdoc
是如何加载的,它真正包含什么内容?我可以想象它并不代表XML。@user2246674是的,这就是我面临的问题,我可以用其他方法来做吗way@GowthamanSS您的代码运行正常。@非常感谢您的支持,我错过了XDocument.parses请注意,多个根元素会导致“XmlException:有多个根元素”请注意,多个根元素会导致“XmlException:有多个根元素”。做得很好!这将是如此容易调试,它不是那么容易猜测和数字与“铅笔和纸”做得很好!这很容易调试,用“铅笔和纸”猜出来也不容易
XDocument xdoc = XDocument.Load(filePath);
if (xdoc == null) return;

XElement response = xdoc.Descendants("response").FirstOrDefault();
XElement structElement = response.Descendants("struct").FirstOrDefault();
var xmlStr = @"<?xml version=""1.0"" encoding=""UTF-8"" ?>
   <response success=""true"">
       <struct>value</struct>
   </response>";
var xdoc = XDocument.Parse(xmlStr);
xdoc.Descendants("response")
    .Select(e => e.Element("struct").Value)
    .Dump();
var xmlStr = @"<?xml version=""1.0"" encoding=""UTF-8"" ?>";
var xdoc = XDocument.Parse(xmlStr);
// --> XmlException: Root element is missing