免责声明:这个问题发生在 Unity 应用程序中,但是 AFAIK,这更像是 C# 问题而不是 Unity 问题......
我正在尝试使用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/");
我究竟做错了什么?
谢谢!