我正在尝试使用c#从xml文档中获取输出。但我没有收到任何输出到网格,也没有生成错误消息。我认为这应该是我在使用XmlnamespaceManager时所犯的错误。我将展示我正在使用的编码。有人可以帮我确定我哪里出错了。我附上了一个示例xml文件。提前致谢
public void InitializePatchListArray()
{
ArrayPatchList[0, 0] = "Installed Patch";
ArrayPatchList[0, 1] = "/compositeReport/eisRecommendedPatchReport/@xmlns:ns2/ns2:recommendedPatchList/ns2:recommendedPatch/ns2:installedPatchId";
}
public void PopulatePatchList()
{
XmlDocument XmlDoc = new XmlDocument();
XmlDoc.Load(XMLFileLocation);
for (int i = 0; i <6; i++)
{
XmlNamespaceManager manager = new XmlNamespaceManager(XmlDoc.NameTable);
manager.AddNamespace("ns2", "http://webhome.central/xml/ns/bre/RuleService");
XmlNodeList XmlValueList = XmlDoc.SelectNodes(ArrayPatchList[i, 1].ToString(),manager);
}
}
答案 0 :(得分:2)
非常确定它只是你的xpath - 奇怪的@xmlns:ns2
看起来不合适。
public void InitializePatchListArray()
{
ArrayPatchList[0, 0] = "Installed Patch";
ArrayPatchList[0, 1] = "/compositeReport/eisRecommendedPatchReport/ns2:recommendedPatchList/ns2:recommendedPatch/ns2:installedPatchId";
}
应该可以正常工作。
答案 1 :(得分:0)
我认为使用序列化可能会更加优雅和清晰。此外,如果您使用的是Visual Studio 2012,则可以自动从XML创建一个类,然后在序列化或反序列化的情况下,以简单的方式指向名称空间