1

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

2 に答える 2

2

それはあなたのxpathに過ぎないことを確信してください - 奇妙@xmlns:ns2に見えます。

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

正常に動作するはずです。

于 2013-11-11T10:10:57.377 に答える
0

シリアル化を使用すると、よりエレガントで明確になると思います。さらに、Visual Studio 2012 を使用している場合は、XML から自動的にクラスを作成し、シリアル化または逆シリアル化する場所で名前空間を簡単な方法で指定できます。

于 2013-11-11T10:10:22.933 に答える