次のような要素を含むxmlファイルがあります
<ab:test>Str</ab:test>
コードを使用してアクセスしようとすると:
XElement tempElement = doc.Descendants(XName.Get("ab:test")).FirstOrDefault();
それは私にこのエラーを与えています:
System.Web.Services.Protocols.SoapException:サーバーは要求を処理できませんでした。 ---> System.Xml.XmlException: ':'文字、16進値0x3Aは名前に含めることができません。
どうすればアクセスできますか?
名前空間を使用する場合は、LINQ to XMLを使用すると非常に簡単になります。
XNamespace ab = "http://whatever-the-url-is";
XElement tempElement = doc.Descendants(ab + "test").FirstOrDefault();
xmlns:ab=...
セクションで、「ab」が参照する名前空間URIを確認します。
名前空間を{
... }
に入れてみてください:
string xfaNamespace = "{http://www.xfa.org/schema/xfa-template/2.6/}";
同じエラーが発生していました。コードを追加していたことがわかりました...
var ab = "http://whatever-the-url-is";
...しかし、abは文字列であると判断されました。これにより、OPによって報告されるエラーが発生しました。 VARキーワードを使用する代わりに、実際のデータ型XNamespaceを使用しました...
XNamespace ab = "http://whatever-the-url-is";
...そして問題はなくなりました。
名前空間を考慮した、試してみたいGetメソッドのオーバーロードがあります。これを試して:
XElement tempElement = doc.Descendants(XName.Get("test", "ab")).FirstOrDefault();
ドキュメントから名前空間を取得してみてください
var ns = doc.Root.Name.Namespace;