2013-11-25 1 views
0

Мне нужна ваша помощь. У меня есть этот XML-файл, который мне нужно прочитать и Diplay его, вот мой XML:Как использовать ретрансляторы с использованием одного XMLDataSource

<tarification cle="979987abdcad675e13e016a6ud4777782"> 
    <gamme reference="new-securite-sante"> 
     <tarif formule="NS1">24.02</tarif> 
     <tarif formule="NS2">26.64</tarif> 
    </gamme> 
    <gamme reference="new-equilibre-sante"> 
     <tarif formule="125">27.95</tarif> 
     <tarif formule="150">34.95</tarif> 
     <tarif formule="200">41.70</tarif> 
    </gamme> 
    <gamme reference="new-full-sante"> 
     <tarif formule="125">33.21</tarif> 
     <tarif formule="150">38.71</tarif> 
     <tarif formule="200">44.92</tarif> 
    </gamme> 
    <gamme reference="new-performance"> 
     <tarif formule="125">36.45</tarif> 
     <tarif formule="150">43.33</tarif> 
     <tarif formule="200">48.17</tarif> 
    </gamme> 
</tarification> 

и код:

<asp:XmlDataSource 
    runat="server" 
    id="XmlDataSource2" 
    DataFile="myfile.xml" /> 

<asp:Repeater ID="Repeater3" runat="server" DataSourceID="XmlDataSource2"> 
      <ItemTemplate> 
       <div id="" runat="server">       
        <h2>Formule : <%# XPath ("@formule") %>'></h2>       
        <h2 class="buy"> <%# XPath ("tarif") %>"  
        <sub>€/ Mois</sub></h2> 
       </div> 
      </ItemTemplate> 
     </asp:Repeater> 

Я хочу, чтобы мой результат выглядит так:

<div> 
    <h2>Formule : NS1</h2> 
    <h2 class="buy"> 24.02 <sub>€/ Mois</sub></h2> 
</div> 
<div> 
    <h2>Formule : NS2</h2> 
    <h2 class="buy"> 26.64 <sub>€/ Mois</sub></h2> 
</div> 
<div> 
    <h2>Formule : 125</h2> 
    <h2 class="buy"> 27.95 <sub>€/ Mois</sub></h2> 
</div> 

что я делаю неправильно? Пожалуйста, поправьте меня.


Hier правильный код, код C#

XmlDocument doc = new XmlDocument(); 

    doc.Load("http://xxxx-xmlfile.com"); 

    XmlNodeList nodes = 
    doc.SelectNodes("tarification/gamme/tarif"); 
    rpMyRepeater.DataSource = nodes; 
    rpMyRepeater.DataBind(); 

<div> 
    <h2>Formule : <%#((System.Xml.XmlNode)Container.DataItem).Attributes["formule"].Value %></h2> 
    <h2 class="buy"><%#((System.Xml.XmlNode)Container.DataItem).InnerText%> <sub>€/ Mois</sub></h2> 
</div> 

И это работает как шарм :)

+0

Какие результаты вы видите? Вы можете улучшить свой вопрос: http://sscce.org –

ответ

0

Проблема, кажется, что "Formule" атрибут находится на объекте «tarif», а не на «gamme». Таким образом, вы можете изменить его:

На вашем XmlDataSource, добавьте свойство XPath:

<asp:XmlDataSource 
runat="server" 
id="XmlDataSource2" 
XPath="/tarification/gamme//tarif" 
DataFile="myfile.xml" /> 

Затем измените шаблон:

<h2>Formule : <%# XPath ("@formule") %></h2>       
<h2 class="buy"> <%# XPath (".") %> 

Или вы могли бы изменить свои данные, чтобы их обоих на тот же уровень.

0

Вы почти у цели! В ретрансляторе измените XPaths в Itemtempalte. Он должен выглядеть следующим образом:

<h2>Formule : <%# XPath ("tarif/@formule") %></h2>       
<h2 class="buy"> <%# XPath ("tarif") %><sub>€/ Mois</sub></h2> 

И здесь генерируется HTML:

<div> 
    <div id="Repeater3_Div1_0">       
     <h2>Formule : NS1</h2>       
     <h2 class="buy"> 24.02 <sub>€/ Mois</sub></h2> 
    </div>     
    <div id="Repeater3_Div1_1">       
     <h2>Formule : 125</h2>       
     <h2 class="buy"> 27.95 <sub>€/ Mois</sub></h2> 
    </div>     
    <div id="Repeater3_Div1_2">       
     <h2>Formule : 125</h2>       
     <h2 class="buy"> 33.21 <sub>€/ Mois</sub></h2> 
    </div>     
    <div id="Repeater3_Div1_3">       
     <h2>Formule : 125</h2>       
     <h2 class="buy"> 36.45 <sub>€/ Mois</sub></h2> 
    </div> 
</div>  
+0

Спасибо, у меня есть правильный код выше :) – user3030806

Смежные вопросы