获取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