У меня есть код, который отправляет запрос, и результаты в формате xml затем присваиваются строковой переменной «tmp». Затем я предоставляю эту переменную в качестве входного XML-данных для функции, которая использует отдельную таблицу стилей xslt для преобразования результатов XML вHTML.
XML:
<?xml version="1.0" encoding="ISO-8859-1" ?>
<Results>
<Exchange>
<OLO>LSMIT</OLO>
<Name>Mitcham</Name>
</Exchange>
<Checks>
<Check id="adsl">
<Linecode>GGEZ</Linecode>
<Linespeed>2048</Linespeed>
<Matched>Address</Matched>
<Provider>BT ADSL</Provider>
<Type>BT xDSL</Type>
<Updated>2010-08-17</Updated>
</Check>
</Checks>
</Results>
Таблица стилей XSLT:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl">
<xsl:output method="html" indent="yes"/>
<xsl:template match="/">
<html>
<body>
<p>You are connected to the <b>
<xsl:for-each select="Results/Exchange">
<xsl:value-of select="Name"/>
</xsl:for-each>
</b> telephone exchange</p>
<br/>
<p>According to <b>
<xsl:for-each select="Results/Checks/Check">
<xsl:value-of select="Provider"/>
</xsl:for-each>
</b>, houses at your postcode should be able to suppor the following:</p>
<br/>
<table>
<tr>
<td>
<img src="/img/tick_BGAvailabilityChecker.png"></img>
</td>
<td>
up to
<xsl:for-each select="Results/Checks/Check">
<xsl:value-of select="Linespeed"/>
</xsl:for-each>
</td>
</tr>
</body>
</html>
</xsl:template>
Невозможно отобразить значения следующих элементов:
<Linecode>
<Linespeed>
<Matched>
Однако я могу отображать следующие элементы просто отлично:
<Provider>
<Type>
<Updated>
Все вышеперечисленное является потомками элемента
Это странно, вопрос в том, почему я не могуЯ отображаю значения Linecode, Linespeed, Matched elemets?
Я потратил слишком много времени на это, не имея возможности выяснить, что отображают некоторые элементы, а другие нет.Будем очень благодарны за любые идеи,
Вот код, который я написал для отправки запроса и сохранения результатов XML в строковую переменную "tmp":
void cmdSubmit_Click(object sender, EventArgs e)
{
//Variable declarations
string user = "PRIVATE";
string pass = "PRIVATE";
string phone = TextBox1.Text;
string postcode = TextBox2.Text;
string buildnum = TextBox3.Text;
string check = "adsl";
string option = "adsllinecheck";
string outputformat = "xml";
string url = String.Format("http://api.samknows.com/checker.do?user={0}&pass={1}&phone=
{2}&postcode={3}&buildingnum={4}&checks={5}&options{6}&output{7}", user, pass, phone,
postcode, buildnum, check, option, outputformat);
Uri uri = new Uri(url);
string data = "field-keywords=ASP.NET 3.5";
if (uri.Scheme == Uri.UriSchemeHttp)
{
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(uri);
request.Method = WebRequestMethods.Http.Post;
request.ContentLength = data.Length;
request.ContentType = "application/x-www-form-urlencoded";
StreamWriter writer = new StreamWriter(request.GetRequestStream());
writer.Write(data);
writer.Close();
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
StreamReader reader = new StreamReader(response.GetResponseStream());
string tmp = reader.ReadToEnd();
После отладки он показывает, чтоэлементы не возвращаются.Однако, когда я просто копирую строку запроса в браузер, результаты в xml отображают соответствующие элементы.
Могу ли я что-то изменить в способе отправки запроса, чтобы гарантировать, что все элементы возвращены?
Спасибо