免責事項: この問題は Unity アプリケーション内で発生していますが、私の知る限り、これは Unity の問題というよりも C# の問題です...
System.Xml.XmlDocumentを使用して Amazon S3 バケット リストを解析しようとしています。これが私のバケット xmlです。C# Xml チュートリアルで見つけた例を使用しています。
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load("http://rss.cnn.com/rss/edition_world.rss");
XmlNode titleNode = xmlDoc.SelectSingleNode("//rss/channel/title");
if(titleNode != null)
Debug.Log(titleNode.InnerText);
これはその特定の XML ファイルでは問題なく機能しますが、自分のものをそこに入れると、次のようになります。
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load("https://s3.amazonaws.com/themall/");
Debug.Log ( xmlDoc.InnerXml );
XmlNode nameNode = xmlDoc.SelectSingleNode("//Name");
if(nameNode != null)
Debug.Log(nameNode.InnerText);
コンソールに未加工の XML が表示されるので、正常にダウンロードされていることがわかりますが、最も単純な XPath でさえ結果が得られません!
私の唯一の理論は、おそらくそれが私の XML のデフォルトの名前空間と関係があるということですか? どういうわけかそれについて XmlDocument に伝える必要がありますか? ここに私のルートタグがあります:
<ListBucketResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
XmlNamespaceManager を作成し、「SelectSingleNode」へのすべての呼び出しでそれを使用しようとしましたが、それもうまくいかないようです。
XPathNavigator nav = xmlDoc.CreateNavigator();
XmlNamespaceManager ns = new XmlNamespaceManager(nav.NameTable);
ns.AddNamespace(System.String.Empty, "http://s3.amazonaws.com/doc/2006-03-01/");
私は何を間違っていますか?
ありがとう!