Jag har försökt hitta något om hur man får ut information ur en xml-fil där tex. du får använda dig av Xpath Jag vet inte riktigt hur jag skulle göra. prova att sätta ett ide på din datum så kan du lättare komma åt det tex. Jag vet inte riktigt hur jag ska sätta det eftersom jag lägger till data i programmet. Det du vill lägga till i ditt datumelement är ett attribut. Det gör du med hjälp av funktionen som heter CreateAttribute eller ngt sånt. Genom att lägga till ett attribut inuti ditt datumelement kan du med XPath välja ut alla datumelement med date=xxxx-xx-xx uppfyllt Jag vet inte hur jag ska göra... Jag fick den att lägga till attributet i det första elementet men sen för att få in det i datumelementet klarade jag inte. Jag har fixat det själv nu.Specifik information ur xml-fil
datumet i noden är det samma som man har valt i en monthcalendar.
Sen ska självklart resten av informationen också komma med.
Xml-filen ser ut ungefär såhär:
<attgoralista>
<attgora>
<datum>2005-08-15</datum>
<ToDo>handla</ToDo>
<attgora>
</attgoralista>
Det jag tänkte var alltså om man väljer den 15 augusti i monthcalendar så ska handla komma upp i en label bredvid.
Det känns som det inte borde vara så svårt men jag tänker nog i helt fel banor.
//Petter Sv: Specifik information ur xml-fil
här är ett exampel som jag har tyvär i C# men borde inte skilja mycket
xpath_filter = "/*/sa[@id='agv 35']";
System.Xml.XmlDocument document = new System.Xml.XmlDataDocument();
document.Load(@"C:\Documents and Settings\ehel\Mina dokument\Visual Studio Projects\agv\fake.xml");
System.Xml.XmlNode node = document.DocumentElement;
node.SelectSingleNode(xpath_filter) 'detta retunerar en XML node men det som finns in den
Ett tips på ett bra program för att få rätt Xpath är Stylus Studio som ger dig Xpath
Sv:Specifik information ur xml-fil
Jag skrev så här:
<code>
Dim xpath_filter = "laxor[*/laxa/todate=" & mCalendar.SelectionStart & "]"
</code>
men jag vet inte om det är rätt.
För att skriva ut informationen göra sen såhär:
<code>
Dim root As XmlElement = xmldoc.DocumentElement
Dim toDate As XmlNodeList = root.SelectNodes("laxor[*/laxa/todate=" & mCalendar.SelectionStart & "]")
Dim amne As XmlNodeList = root.GetElementsByTagName("Amne")
Dim ToDo As XmlNodeList = root.GetElementsByTagName("ToDo")
For i = 0 To toDate.Count - 1
Label1.Text = toDate(i).InnerXml
Label2.Text = ToDo(i).InnerXml & " i " & amne(i).InnerXml
Next
</code>
Det finns säkert något som man inte ska göra.
//PetterSv: Specifik information ur xml-fil
<?xml version="1.0"?>
<attgoralista>
<attgora>
<datum date="2005-08-15">
<ToDo>handla</ToDo>
</datum>
</attgora>
</attgoralista>
Xpath blir "/attgoralista/attgora/datum[@date="2005-08-15"]"
Vilket ger dig
<datum date="2005-08-15">
<ToDo>handla</ToDo>
</datum>Sv:Specifik information ur xml-fil
xmlNode = xmlDoc.CreateElement("laxa")
xmltoDateNode = xmlDoc.CreateElement("toDate")
xmltoDateNode.InnerText = Label1.Text 'Det här lägger till datumet mellan todate taggarna
xmlamneNode = xmlDoc.CreateElement("Amne")
xmlamneNode.InnerText = ComboBox1.Text
xmlTodoNode = xmlDoc.CreateElement("ToDo")
xmlTodoNode.InnerText = TextBox1.Text
Den här koden fungerar så som jag gjorde förut. Men hur ska jag göra för att sätta ett id?
//Petter
Sv: Specifik information ur xml-fil
Har ingen färdig kod här nu men du reder nog ut det...Sv:Specifik information ur xml-fil
Om du möjligtvis skulle ha ett kodexempel eller en liten förklaring på hur man gör skulle jag bli jätte glad!!
//PetterSv: Specifik information ur xml-fil
Jag gjorde om xmltodatenode till ett xmlelement istället för en xmlnode.
Då kunde jag sätta ett attribut på det rätta elementet.
Men nu får jag inte till det när jag ska läsa från xml-filen.
Hur är det jag ska göra när jag satt xpath till det värde jag vill ha.
Jag gjorde såhär för att testa lite
Dim i As Integer
Dim xpathfilter = "/laxor/laxa/toDate[@date=" & mCalendar.SelectionStart & "]"
Dim xtr As New XmlTextReader("..\laxor.xml")
xtr.WhitespaceHandling = WhitespaceHandling.None
Dim xmldoc As New XmlDocument
xmldoc.Load(xtr)
xtr.Close()
Dim root As XmlElement = xmldoc.DocumentElement
Dim toDate As XmlElement = root.SelectSingleNode(xpathfilter)
Dim amne As XmlNodeList = root.GetElementsByTagName("Amne")
Dim ToDo As XmlNodeList = root.GetElementsByTagName("ToDo")
Label1.Text = toDate.InnerXml
Det fungerar inte som du kanske förstår.
//Petter