我发送了一些请求,有时我得到xml响应
<?xml version="1.0" encoding="UTF-8"?>
<debt-response>
<status>0</status>
<name>ნ.ს.</name>
<schedules>
<schedule>07.07.2017 1171.8000 GEL 1</schedule>
<schedule>07.08.2017 1171.8000 GEL 1</schedule>
<schedule>07.09.2017 1171.8000 GEL 1</schedule>
</schedules>
</debt-response>
有时我会
<?xml version="1.0" encoding="UTF-8"?>
<debt-response>
<status>0</status>
<name>ნ.ბ.</name>
<schedules>
<schedule>06.07.2018 1.5 GEL 1</schedule>
<debt>15.06.2018 0.97</debt>
</schedules>
</debt-response>
我正在使用var acc_numArray = xmlDoc.SelectNodes(“/ debt-response / schedules / debt”);但如果不存在这样的元素,那就是异常。 如果这样的节点存在任何解决方案,我想得到那笔债务?
答案 0 :(得分:0)
你可以尝试
var debt = XDocument.Load("path to your xml").Descendants("debt").First()?.Value;
获取第一个debt
元素并返回其值。
如果您有多个债务,以下代码会将元素值保存在列表中:
var debt = XDocument.Load("path to your xml").Descendants("debt").Select(d => d.Value).ToList();
如果您正在从流中读取xml,请使用XDocument.Parse("your string")
代替Load()
。
注意:您需要System.Xml.Linq
命名空间。
答案 1 :(得分:0)
如果没有看到您的代码,我只能猜测您正在做什么 - 但有一件事是肯定的,如果指定的XPath无法找到任何节点,则此行将不抛出异常:
var acc_numArray = xmlDoc.SelectNodes("/debt-response/schedules/debt");
相反,它会返回XmlNodeList
,其中count
为零。
我假设您尝试访问节点列表时发生异常,就好像它有项目一样 - 但只需检查计数,只有在非零时才访问它:
var acc_numArray = xmlDocument.SelectNodes("/debt-response/schedules/debt");
if (acc_numArray.Count > 0)
{
// Do stuff here
}
如果您将实际代码的示例放入问题中,那么帮助您将会容易得多。