【发布时间】:2019-07-25 17:49:18
【问题描述】:
我从服务中收到以下字符串作为列表返回
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<feed version="0.3" xmlns="http://purl.org/atom/ns#">
<entry>
<id>1</id>
<title>Job 1</title>
<author>
<name>Jim James</name>
</author>
<modified>2018-08-10T14:50:46-04:00</modified>
</entry>
<entry>
<id>2</id>
<title>Job 2</title>
<author>
<name>John Smith</name>
</author>
<modified>2018-09-10T14:50:46-04:00</modified>
</entry>
<entry>
<id>3</id>
<title>Job 3</title>
<author>
<name>Paul Rain</name>
</author>
<modified>2018-06-10T14:50:46-04:00</modified>
</entry>
<entry>
<id>4</id>
<title>Job 4</title>
<author>
<name>Jim James</name>
</author>
<modified>2018-08-10T14:50:46-04:00</modified>
</entry>
</feed>
我试图通过内部文本获取 name 的值但无法这样做:
即
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml(response); //assuming response is above xml string
XmlNodeList parentNode = xmlDoc.GetElementsByTagName("entry");
foreach (XmlNode childrenNode2 in parentNode)
{
var b = childrenNode2.SelectSingleNode("name").InnerText ?? string.Empty;
}
相反,我得到的是 object is null 异常。
"ExceptionMessage": "Object reference not set to an instance of an object.",
任何指针表示赞赏。
【问题讨论】:
-
无法反序列化 XML,因为您缺少
</author>标记 -
xml 不正确。正如@MindSwipe 所说,它缺少最终作者标签,或者应该是这样的
<author />。并且缺少根节点,但这可能是因为您提供了一个 sn-p 而不是整个 xml。 -
除了你的 XML 无效,考虑使用
XElement; API 比XmlDocument更友好(例如from entry in XElement.Load(response).Elements("entry") select (string) entry.Element("name"))。 -
提示:从菜单测试 xml 在 VS 中是否良好:项目:添加新项目:XML 文件。然后将xml粘贴到视图中。错误将像错误列表中的编译器错误一样显示。缺少的标签也会用红色下划线表示。
-
道歉 - 我已将更新添加到 xml 以关闭。还是同样的问题。 @JeroenMostert - 感谢您提出这种方法。我试过 foreach (XmlNode childrenNode2 in parentNode) { var x = (from entry in XElement.Load(response).Elements("entry") select (string)entry.Element("name")); } 但收到 "ExceptionMessage": "Invalid URI: The Uri string is too long."
标签: c# asp.net .net xml xml-documentation