【发布时间】:2025-11-28 19:25:01
【问题描述】:
我有一个 web 服务,它返回如下所示的 xmlement
<Application xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Type>C</Type>
<AppDate>2012-05-01T00:00:00</AppDate>
<Applicants>
<ID>1234</ID>
</Applicants>
<Applicants>
<ID>0</ID>
</Applicants>
<Status>O</Status>
</Application>
在我的客户端 我有这样的代码
XmlElement root = proxy.CallWebservice();
XmlNodeList nodeList;
nodeList = root.SelectNodes("/Application/Applicants");
foreach (XmlNode applicants in nodeList)
{
Console.WriteLine(applicants.InnerXml);
}
问题:我无法输出任何内容。
但是
如果我这样做
File.WriteAllText(@"d:\output.xml", root.OuterXml.ToString());
XmlDocument doc = new XmlDocument();
doc.Load(@"d:\output.xml");
XmlElement root = doc.DocumentElement;
XmlNodeList nodeList;
nodeList = root.SelectNodes("/Application/Applicants");
foreach (XmlNode title in nodeList)
{
Console.WriteLine(title.InnerXml);
}
它工作正常,我不想写入文件来读取节点。我做错了什么?
【问题讨论】:
-
我只是想知道这是否是因为您将文件加载到 XmlDocument 中,而您只是将 XmlElement 用于非工作示例。
-
XPath 问题通常与命名空间有关。如果命名空间“关闭”,则一切正常,但如果它们“打开”,它们将失败,直到您向 xml 处理器注册命名空间。您可以尝试删除 'xmlns:xsi="w3.org/2001/XMLSchema-instance"' 属性吗?这将提供线索。
-
一个猜测,但我怀疑 Proxy.WebService 和 Document.DocumentElement 不是同一个节点,快速调试应该告诉你。
标签: c# xml web-services xml-parsing