本文介绍了Azure市场XML切碎的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在尝试从uri上从蔚蓝市场中找到MSFT转换器的平衡b
https://api.datamarket.azure.com/Services/My/Datasets
因此,代码段是:
Hi,
I am trying to find the balance of the MSFT translator from the azure marketplace b looking at the uri
https://api.datamarket.azure.com/Services/My/Datasets
So a code snippet is :
Uri targetUri = new Uri("https://api.datamarket.azure.com/Services/My/Datasets");
NetworkCredential myCredentials = new NetworkCredential(myUserName, myAzureKey);
WebClient myWebClient = new WebClient();
myWebClient.Credentials = myCredentials;
myWebClient.BaseAddress = myUrl;
string myResonse = myWebClient.DownloadString(targetUri);
XmlDocument myXmlDoc = new XmlDocument();
myXmlDoc.LoadXml(myResonse);
// Set up namespace manager for XPath
XmlNamespaceManager myXmlNamespaceManager = new XmlNamespaceManager(myXmlDoc.NameTable);
myXmlNamespaceManager.AddNamespace("base", "https://api.datamarket.azure.com/Services.svc/My/Datasets");
myXmlNamespaceManager.AddNamespace("d", "http://schemas.microsoft.com/ado/2007/08/dataservices");
myXmlNamespaceManager.AddNamespace("m", "http://schemas.microsoft.com/ado/2007/08/dataservices/metadata");
myXmlNamespaceManager.AddNamespace("", "http://www.w3.org/2005/Atom");
XmlNode myNode = myXmlDoc.LastChild;
XmlNodeList myXmlNodeList = myNode.SelectNodes("entry/content/m:properties", myXmlNamespaceManager);
.....
但是节点列表为空,因此我也无法访问已订阅的数据服务列表中的d:ResourceBalance属性.
有没有人建议我如何遍历DOM才能进入本条目-或Im做错了什么?
干杯
Peter
.....
But the nodelist is empty so I cannot get to the the d:ResourceBalance atribute in the list of data services subscribed too.
Has anyone suggestions as to how I can walk the DOM to get to this entry - or what Im doing wrong ?
Cheers
Peter
推荐答案
public static int countRemaining(string myUserName, string myAzureKey, string myAzureBalanceUrl)
{
string myNumber = string.Empty;
int myReturn = 0;
StreamReader StreamHandler;
XmlDocument myXmlDoc = new XmlDocument();
bool myTranslatorFlag = false;
Uri targetUri = new Uri(myAzureBalanceUrl);
NetworkCredential myCredentials = new NetworkCredential(myUserName, myAzureKey);
try
{
HttpWebRequest myHttpWebRequest = (HttpWebRequest)WebRequest.Create(targetUri);
myHttpWebRequest.Credentials = myCredentials;
HttpWebResponse myHttpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse();
if (myHttpWebRequest.HaveResponse)
{
if (myHttpWebResponse.StatusCode == HttpStatusCode.OK)
{
StreamHandler = new System.IO.StreamReader(myHttpWebResponse.GetResponseStream());
myXmlDoc.LoadXml(StreamHandler.ReadToEnd());
XmlNodeList myParentNodeList = myXmlDoc.ChildNodes;
XmlNode myFeed = myParentNodeList[0];
XmlNodeList myEntryList = myFeed.ChildNodes;
foreach (XmlNode myAzureNode in myEntryList)
{
if (myAzureNode.Name == "entry")
{
XmlNodeList myContent = myAzureNode.ChildNodes;
foreach (XmlNode myEntryNode in myContent)
{
if (myEntryNode.Name == "title" && myEntryNode.InnerText == "Microsoft Translator")
{
myTranslatorFlag = true;
}
if (myEntryNode.Name == "content" && myTranslatorFlag)
{
XmlNodeList myTemp = myEntryNode.ChildNodes;
XmlNode myTempNode = myTemp[0];
XmlNodeList myProperties = myTempNode.ChildNodes;
foreach (XmlNode myValueNode in myProperties)
{
if (myValueNode.Name == "d:ResourceBalance")
{
myNumber = myValueNode.InnerText;
}
}
}
}
}
}
}
}
}
catch (Exception)
{
myNumber = "0";
}
bool myTest = Int32.TryParse(myNumber, out myReturn);
if (!myTest) myReturn = 0;
return myReturn;
}
这篇关于Azure市场XML切碎的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!