【发布时间】:2015-07-15 13:54:49
【问题描述】:
在我的应用程序中,我得到了一个 XML Response,我正在尝试使用 XmlNode 转换该 XML 响应。
我的 XML 文件:File
XML 内容如下:
<account name="santosh@mx.omit-solutions.com" id="876e6b55-5a9c-44ff-a418-af737c47d2af">
<a n="mobile">91 998977245009</a>
<a n="zimbraMailDeliveryAddress">santosh@mx.omit-solutions.com</a>
<a n="zimbraPrefIMLogChats">TRUE</a>
</account>
<account name="mani@mx.omit-solutions.com" id="ce91d3bf-83b8-4a55-a92e-2e080fa4a21b">
<a n="zimbraMailDeliveryAddress">mani@mx.omit-solutions.com</a>
<a n="zimbraPrefShowSearchString">FALSE</a>
<a n="zimbraPrefIMLogChats">TRUE</a>
</account>
在这里,我展示了来自该 XML 响应的两个示例帐户,我需要遍历所有 account nodes 并获取 zimbraMailDeliveryAddress,这肯定会在每个节点中可用,还有 mobile 元素值 ('91 998977245009')这可能并非在每个节点中都可用(即标签根本不可用)。
有没有办法获得这些值?
我试过像这样使用XmlNamespaceManager:
XmlNamespaceManager mgr = new XmlNamespaceManager(doc.NameTable);
mgr.AddNamespace("bc", "urn:zimbraAdmin");
XmlNode result = doc.SelectSingleNode("//bc:account", mgr);
if (result != null)
{
Console.WriteLine("Found {0}.", result.InnerText);
}
else
{
// handle case that no element was found
Console.WriteLine("No element found.");
}
但是通过使用此代码,我只能获得 first account node 数据,并且无法循环访问 all account nodes。
谁能帮帮我?
【问题讨论】:
-
也许是
SelectNodes而不是SelectSingleNode?
标签: c# xml xpath xml-parsing zimbra