使用XML文档时指定命名空间

时间:2013-11-11 10:02:32

标签: c# xml

我正在尝试使用c#从xml文档中获取输出。但我没有收到任何输出到网格,也没有生成错误消息。我认为这应该是我在使用XmlnamespaceManager时所犯的错误。我将展示我正在使用的编码。有人可以帮我确定我哪里出错了。我附上了一个示例xml文件。提前致谢enter image description here

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);              
    }
}

2 个答案:

答案 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创建一个类,然后在序列化或反序列化的情况下,以简单的方式指向名称空间