1

いくつかのドキュメントを自動生成する(そしてxpathを学ぶ)ために、WSDLファイルからすべての操作のリストを取得しようとしています。

私がこれまでに試したことは次のとおりです。

        doc = new XmlDocument();
        doc.Load(@"C:\temp\tempuri.org.wsdl");
        var list = doc.SelectNodes("wsdl:definitions/wsdl:portType/wsdl:operation");

これは私にエラーを与えます:

名前空間マネージャーまたはXsltContextが必要です。このクエリには、プレフィックス、変数、またはユーザー定義関数があります。

なぜこのエラーが発生するのか、そしてそれを修正する方法を誰かが説明できますか?

4

1 に答える 1

1

この回答を確認することをお勧めします:C#XPathヘルプ-式が機能しない

wsdlクエリを開始する前に、名前空間を登録する必要があります。

例えば:

XPathDocument xDoc = new XPathDocument(@"C:\temp\tempuri.org.wsdl");
XPathNavigator xNav = xDoc.CreateNavigator();
XmlNamespaceManager mngr = new XmlNamespaceManager(xNav.NameTable);
mngr.AddNamespace("wsdl", "http://schemas.xmlsoap.org/wsdl/"); // this namespace may need to be different - I don't know what your wsdl file looks like
XPathNodeIterator xIter = xNav.Select("wsdl:definitions/wsdl:portType/wsdl:operation",mngr);

または、LINQ toXMLを使用することもできます-JonSkeetからのこの回答を参照してください:NamespaceManagerまたはXsltContextが必要です

しかし、あなたはxPathを学びたいと言ったので、それは無関係だと思います。

于 2013-03-27T09:35:51.890 に答える