【发布时间】:2020-07-14 18:38:53
【问题描述】:
我正在使用 XMLReader 读取给定 XML 中的所有元素,但未检索到某些元素的内容。
一个例子:
string msg = string.Empty;
using (XmlReader xReader = XmlReader.Create(new StringReader("<ns3:Failure xmlns:ns3=\"urn:xxxx\"><Code>Unauthorized</Code><Reason>Access denied</Reason><Detail>Invalid username/password.</Detail></ns3:Failure>")))
{
while (xReader.Read())
{
if (xReader.NodeType == XmlNodeType.Element)
{
switch (xReader.Name)
{
case "Code":
msg = msg + " " + xReader.ReadElementContentAsString();
break;
case "Reason":
msg = msg + " " + xReader.ReadElementContentAsString();
break;
case "Detail":
msg = msg + " " + xReader.ReadElementContentAsString();
break;
}
}
}
}
执行上述代码后,msg 的值为“Unauthorized Invalid username/password.”
缺少<Reason> 的内容。
预期值应为“未经授权的访问被拒绝无效的用户名/密码。”
如何获取所有元素的内容?
【问题讨论】:
-
你不是递归地阅读文档——你只是阅读一次。
-
@DanielA.White 是的,文档被读取一次,然后递归读取每个元素。问题是我可以获得
和 <detail> 的内容,但不能获得 <reason></reason></detail>的内容