Hur skall jag skriva min xpath fråga om jag vill returnera vilka författare som finns med i XML-filen (se nedan) ? Drog ihop ett enkelt exempel på hur du kan använda dig utav XPath, för att få ut alla författare. Nja vill nog bara att Olle skall nämnas en gång och inte två gånger... Välj bara de author-element som inte har ett author-element med samma namn framför sig i dokumentet med uttrycket:XPATH nöt n1
<code>
<?xml version="1.0" encoding="ISO-8859-1"?>
<bookstore>
<book>
<title lang="eng">Harry Potter</title>
<author>NISSE</author>
<price>29.99</price>
</book>
<book>
<title lang="eng">Learning XML</title>
<author>OLLE</author>
<price>39.95</price>
</book>
<book>
<title lang="eng">Learning XML once more</title>
<author>OLLE</author>
<price>139.95</price>
</book>
</bookstore>
</code>Sv: XPATH nöt
<code>
public void GetAuthor() {
XmlDocument doc = new XmlDocument();
doc.Load("bookstore.xml");
XmlNodeList nodeList = doc.DocumentElement.SelectNodes("//bookstore//book//author");
foreach (XmlNode node in nodeList)
{
node.InnerText;
}
}
</code>
Sedan måste du returnera dem på ett lämpligt sätt, men det orkar jag inte med i kväll. ;)
Hoppas du får lite vägledning iaf.Sv:XPATH nöt
Alltså mitt önskade svar skall bli
<code>
NISSE
OLLE
</code>Sv: XPATH nöt
<code>//author[not(preceding::author = .)]</code>
preceding::author innehåller alla author-element framför nuvarande element.
Om den ena operanden till =-operatorn är en nodmängd, så jämförs värdet (.) med varje nod och uttrycket blir sant om det existerar en nod i mängden som har det sökta värdet.