C# 使用XML文档时指定名称空间

C# 使用XML文档时指定名称空间,c#,xml,C#,Xml,我正在尝试使用c#从xml文档获取输出。但我没有收到任何网格输出,也没有生成错误消息。我认为这应该是我在使用XmlnamespaceManager时犯的错误。我将显示我正在使用的编码。有人能帮我找出哪里出了问题吗。我随函附上了一个示例xml文件。提前谢谢 public void InitializePatchListArray() { ArrayPatchList[0, 0] = "Installed Patch"; ArrayPatchList[0, 1] = "/compos

我正在尝试使用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);              
    }
}
public void InitializePatchListArray()
{
ArrayPatchList[0,0]=“已安装的修补程序”;
ArrayPatchList[0,1]=“/compositeReport/EISRommendedPatchReport/@xmlns:ns2/ns2:recommendedPatchList/ns2:RecommendedPatchId”;
}
public void PopulatePatchList()
{
XmlDocument XmlDoc=新的XmlDocument();
加载(XMLFileLocation);

对于(int i=0;i我认为使用序列化可能更优雅、更清晰。此外,如果您使用Visual Studio 2012,您可以自动从XML创建一个类,然后在序列化或反序列化的地方,以简单的方式指向名称空间

非常确定这只是您的xpath-奇怪的
@xmlns:ns2
looks不合适

public void InitializePatchListArray()
{
  ArrayPatchList[0, 0] = "Installed Patch";
  ArrayPatchList[0, 1] = "/compositeReport/eisRecommendedPatchReport/ns2:recommendedPatchList/ns2:recommendedPatch/ns2:installedPatchId";
}

应该可以正常工作。

如果路径表达式中没有
/@xmlns:ns2
部分,它可以工作吗?我不清楚您试图对该部分做什么。为什么要在循环中创建名称空间管理器是的,这就是问题所在。非常感谢