首页 > 解决方案 > 如果节点存在,则检查xml c#

问题描述

我发送了一些请求,有时我得到了 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"); 但如果不存在这样的元素,它就会出现异常。如果这样的节点存在任何解决方案,我想得到那笔债务?

标签: c#xml

解决方案


在没有看到您的代码的情况下,我只能猜测您在做什么 - 但有一点是肯定的,如果指定的 XPath 无法找到任何节点,则此行不会引发异常:

var acc_numArray = xmlDoc.SelectNodes("/debt-response/schedules/debt");

相反,它将返回XmlNodeListacount为零。

我假设当您尝试访问节点列表时发生异常,就好像它有项目一样 - 但只需检查计数并仅在它非零时访问它:

var acc_numArray = xmlDocument.SelectNodes("/debt-response/schedules/debt");

if (acc_numArray.Count > 0)
{
    // Do stuff here
}

如果您将实际代码的示例放入问题中,那么对您的帮助会容易得多。


推荐阅读