» »

xpath

xpath

urbecar ::

Xml je približno taki. Vsi nodi so elementi ,torej ni noben atribut. Rabil bi xpath (ver 1.0), ki bi izbral vse node B , katerih id je 0 . Nodi niso vpisani po vrstnem redu(recimo id-ji si po vrsti sledijo 0,1,5,6,7), tako da označevanje glede na pozicijo odpade.
<a>
   <b>
     <c1>
         <id>0</id>
         <cena>123</cena>
         .....
     </c1>
     <c2>
      .....
     </c2>
   </b>


   <b>
     <c1>
         <id>0</id>
         <cena>123</cena>
     </c1>
     <c2>
      .....
     </c2>
   </b>
   .
   .
   .

</a>

Microsoft ::

Mogoce tole:
/a/b/*[id=0]


by Miha
s8eqaWrumatu*h-+r5wre3$ev_pheNeyut#VUbraS@e2$u5ESwE67&uhukuCh3pr

urbecar ::

Hvala miha sem rešil sam vendar mi na tvoj način ni pa ni hotelo delat. Možno da sem se 5x za povrstjo zatipkal ampak....

No men je ratalo tak(sej ve da je enako):

string XPath="//b[c/id="+žbljk+"]"



EDIT: Šele zdej opazu da sm pozabljal tisto * pred id=0

Zgodovina sprememb…

  • spremenil: urbecar ()

BivšiUser2 ::

Rad bi bral z spletne strani pa ne vem točno kje ga sekam.
Funkcija, ki bi to naj naredila je
public List<string> GetTypesOfFood(string website)
    {
        List<string> TypesOfFood = new List<string>();

        HtmlDocument document = GetHtmlOfPage(website).Result;
        /* HtmlNode docNodes = document.DocumentNode;
         HtmlNode ul = docNodes.Element("id('ContentHolderMain_ContentHolderMainContent_ContentHolderMainContent_pnlDaily')/x:div/x:ol/x:li[1]/x:ul[@title]");*/ 
//> celoten Xpath elementa


        HtmlNode div = document.GetElementbyId("ContentHolderMain_ContentHolderMainContent_ContentHolderMainContent_pnlDaily");
        if(div!=null)
        {
            var ul = div.Element("//div[@class='holderRestaurantInfo']/ol/li[1]/ul/@title").GetAttributeValue("title", "title");
                string a = ul;
//vmes še pride zanka...
            TypesOfFood.Add(a);
        }
        return TypesOfFood;
    }

Koda, ki naj bi vrnila HtmlDocument:
private static async Task<HtmlDocument> GetHtmlOfPage(string website)
    {
           return await new HtmlWeb().LoadFromWebAsync(website);
    }

Rad bi bral atribut title najnižjega ul-ja, potem pa pod vsakim ul-jem še InnerText njegovih treh li-jev. Sem pogledal številne tutoriale, ne zastopim pa sintakse za UWP, ki je precej oskubljena.
Primer HTML-ja:
<krneki>
<--! Njihove id-je in classe imam-->
        <ol>
           <li>
              <h6></h6>
                 <ul>
                 <--! ul, ki ga iščem -->
                     <li>Vsebina n-tega li-ja od m-tega ul-ja</li>
                     <li>Vsebina n+1-tega li-ja od m-tega ul-ja</li>
                     <li>Vsebina n-tega li-ja od m-tega ul-ja</li>
                 </ul>
            </li>
           <li> Jovo na novo zgornji h6, ul>li</li>
         </ol>
</krneki>
SloTech - če nisi z nami, si persona non grata.


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Davčne blagajne (strani: 1 2 3 424 25 26 27 )

Oddelek: Programiranje
1344333825 (73828) Macketina
»

Slo-Tech userscripts

Oddelek: Izdelava spletišč
175204 (2656) jype
»

jquery in div-i (strani: 1 2 )

Oddelek: Izdelava spletišč
8711358 (10096) lisjak
»

getElementsByTagName ne dela v Chromu

Oddelek: Programiranje
141695 (1433) win64
»

parsanje podatkov iz strani

Oddelek: Programiranje
132024 (1819) commissar

Več podobnih tem