2012-03-26 4 views
1

У меня есть источник XML, и одно из полей - «описание», которое может меняться по длине, но всегда довольно длинное. Когда я передаю это моему ретранслятору asp.net, я хотел бы ограничить количество символов, отображаемых для последовательности и краткости. Есть какой-либо способ сделать это? Скажем ... 300 символов.Как ограничить количество символов, отображаемых в записи XML в asp.net?

Спасибо заранее!

Мой передний конец Код:

 <asp:Repeater ID="xPathRepeater" runat="server"> 
     <ItemTemplate> 
      <li> 
       <h3><%#XPath ("title") %></h3> 
       <p><%#XPath("description")%></p> 
      </li> 
     </ItemTemplate> 
     </asp:Repeater> 

Мой код позади:

protected void XMLsource() 
{ 
    string URLString = "http://ExternalSite.com/xmlfeed.asp"; 

    XmlDataSource x = new XmlDataSource(); 
    x.DataFile = URLString; 
    x.XPath = String.Format(@"root/job [position() < 5]"); 

    xPathRepeater.DataSource = x; 
    xPathRepeater.DataBind(); 
} 

ответ

1

Я предполагаю, что XML может быть как показано ниже.

<Root> 
    <Row id="1"> 
    <title>contact name 1</name> 
    <desc>contact note 1</note> 
    </Row> 
    <Row id="2"> 
    <title>contact name 2</title> 
    <desc>contact note 2</desc> 
    </Row> 
</Root> 

Справка из here

Заменить HTML к следующему.

<h3><asp:Label ID="title" runat="server"></asp:Label></h3> 
<p><asp:Label ID="desc" runat="server"></asp:Label></p> 

Зарегистрируйте OnItemDataBound Событие Repeater и написать следующий код ..

protected void ED_ItemDataBound(object sender, RepeaterItemEventArgs e) 
{ 
    if (e.Item.ItemType == ListItemType.Item) 
    { 
     Label title = (Label)e.Item.FindControl("title"); 
     title.Text = ((System.Xml.XmlElement)e.Item.DataItem).ChildNodes[0].InnerText; 

     Label desc = (Label)e.Item.FindControl("desc"); 
     desc.Text = ((System.Xml.XmlElement)e.Item.DataItem).ChildNodes[1].InnerText.Substring(1, 300) + "..."; 
    } 
} 
+0

Одна вещь, вы можете оценить 'desc.text', чтобы убедиться, что вы не сокращаете слово пополам. – Robert

+0

@ Панкадж, мне нравится, где ты собираешься с этим. Однако я не уверен, что код работает. У меня возникла ошибка при попытке доступа к XML. Невозможно применить объект типа «System.Web.UI.WebControls.XmlDataSourceNodeDescriptor» для ввода «System.Xml.XmlElement». XML такой же, как и ваш пример (меньше идентификатора строки). Я недостаточно разбираюсь в Xml, чтобы понять, что там происходит. –

+0

можете ли вы разместить свой образец XML и код, используемый стороной ура? – Pankaj

3

Может быть, вы можете использовать подстроку от значения возвращенного запроса XPath?

+0

Это кажется как хороший вариант. Как я могу применить это к записи XML? Кроме того, подузел? Благодаря! И чтобы быть понятным - я вытаскиваю этот XML-файл и не создаю его сам. –