der Titel ist vielleicht etwas unglücklich gewählt, aber mir fiel nichts anderes ein Ich stehe vor einem selten dämlichen Problem und komme einfach nicht auf die Lösung.
Ich möchte effektiv die Werte verschiedener Input-Felder aus einem HTML-Dokument auslesen (<input.... value=***). Das kriege ich mit Hängen und Würgen über reguläre Ausdrücke hin.
Was aber gar nicht gelingen will ist, den Wert einer Selektion auszulesen d.h. ich habe beispielsweise ein Select:
Ich möchte nun mittels VB.NET den Wert auslesen, der selektiert ist, also yyy. Irgendjemand irgendeine Idee, wie ich das am effektivsten umsetzen kann?
Das Problem ist, dass ich zum Einen mehrere Selects auf der Seite habe und meine Regex-Versuche bisher gescheitert sind und zum Anderen, dass ich bei Möglichkeit auf Reguläre Ausdrücke verzichten wollen würde.
Diese XPath-Geschichte gefällt mir eigentlich ganz gut, ich krieg sie nur noch nicht zum Laufen Ich glaube nämlich, dass es kaum einfacher und performanter geht.
Code:
Imports System.Xml.Linq
'....'
Dim s1 As String = "<select name=""bla""> <option value=""***"">***</option> <option value=""yyy"" selected=""selected"">yyy</option> <option value=""zzz"">zzz</option> </select>"
Dim doc As XDocument = XDocument.Parse(s1)
Dim query1 = From simpleItem In doc.Descendants("option") _
Where simpleItem.Attribute("name") = "bla" _
And simpleItem.Attribute("selected").Value = "selected" _
Select simpleItem.Attribute("value")
Dim val1 As String = query1.First().Value
Das schmeißt leider nur so mit Exceptions um sich:
Quote:
Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.
Das Problem ist, dass ich zum Einen mehrere Selects auf der Seite habe und meine Regex-Versuche bisher gescheitert sind und zum Anderen, dass ich bei Möglichkeit auf Reguläre Ausdrücke verzichten wollen würde.
Diese XPath-Geschichte gefällt mir eigentlich ganz gut, ich krieg sie nur noch nicht zum Laufen Ich glaube nämlich, dass es kaum einfacher und performanter geht.
Code:
Imports System.Xml.Linq
'....'
Dim s1 As String = "<select name=""bla""> <option value=""xxx"">xxx</option> <option value=""yyy"" selected=""selected"">yyy</option> <option value=""zzz"">zzz</option> </select>"
Dim doc As XDocument = XDocument.Parse(s1)
Dim query1 = From simpleItem In doc.Descendants("option") _
Where simpleItem.Attribute("name") = "bla" _
And simpleItem.Attribute("selected").Value = "selected" _
Select simpleItem.Attribute("value")
Dim val1 As String = query1.First().Value
Das schmeißt leider nur so mit Exceptions um sich:
Quote:
Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.
ich vermute das liegt daran, dass einige tags kein selected sttibut haben und Attribute("selected") dementprechend null zurückgibt.
deswegen hatte ich auch oben in menem code
Code:
where [COLOR="RED"] simpleItem.Attribute("selected") != null && [/COLOR]simpleItem.Attribute("selected").Value == "selected"
Das hatte ich nachträglich entfernt, ist leider nicht das Problem. So sah es ursprünglich aus:
Code:
Dim s1 As String = "<select name=""bla""> <option value=""***"">***</option> <option value=""yyy"" selected=""selected"">yyy</option> <option value=""zzz"">zzz</option> </select>"
Dim doc As XDocument = XDocument.Parse(s1)
Dim query1 = From simpleItem In doc.Descendants("option") _
Where simpleItem.Attribute("name") = "bla" _
And simpleItem.Attribute("selected") IsNot Nothing _
And simpleItem.Attribute("selected").Value = "selected" _
Select simpleItem.Attribute("value")
Dim val1 As String = query1.First().Value
EDIT:
Okay... Zumindest habe ich einen Denkfehler gefunden:
Code:
Where simpleItem.Attribute("name") = "bla"
das wird nicht gehen, wenn ich mich auf "option" beziehe. Richtig? Aber auch das ist nicht das Problem.
njaa
doc.Descendants("option")
gibt ja die liste aller <option> taggs zurück, diese haben aber kein attribut "name" deswegen wirst du wohl bei impleItem.Attribute("name") = "bla" den fehler bekommen
Wie gesagt: Das ist leider auch nicht das Problem Zumal ich mir noch nicht darüber im Klaren bin, wie ich eben explizit die Optionen des Select-Elements mit dem Namen "bla" entsprechend auswerten könnte. Arbeite das 1. Mal mit XDocument und die Doku hält sich diesbezüglich leider sehr... Uninformativ
hmm, habs jetzt mal in visual studio kopiert und den fehler gefunden:
der "And" operator in VB wertet IMMER beide terme aus im gegensatz du dem && Operator aus C# der wenn das erste ergebnis schon falsch ist das zweite garnicht mehr auswertet.
was du bruchtst ist der "AndAlso" operator der sich genauso verhält wie "&&" in C#. Dieser code solte funktionieren:
Code:
Dim doc As XDocument = XDocument.Parse(s1)
Dim query1 = From simpleItem In doc.Descendants("option") _
Where simpleItem.Attribute("selected") IsNot Nothing _
AndAlso simpleItem.Attribute("selected").Value = "selected" _
Select simpleItem.Attribute("value")
Dim val1 As String = query1.First().Value
Ich Idiot, ich hatte sogar AndAlso zuerst drin stehen Oky, also grundtechnisch ist die Frage gelöst. Bleibt nurnoch die Bitte, dass du mir irgendwie erklären kannst, wie ich die "Suche" auf das Element "bla" beschränken kann. Also dass ich nur die Optionen aus dem Select-Feld mit dem Namen "bla" entsprechend vergleiche.
Ich könnte hier mit meiner selbstgebauten Stringbetween-Funktion arbeiten, aber das ist unschön, wenn man vergleichsweise doch eine wirklich gute Lösung nutzen könnte. Weiß halt nicht, ob das geht, kann mir aber nicht vorstellen, dass es nicht geht
Zum Thema Code-Tag: Ich kenn's nur farbig Wobei man selbst gepostete Code-Container nur dann farbig sieht, wenn man die Seite nach der Beitragserstellung aktualisiert
Ich Idiot, ich hatte sogar AndAlso zuerst drin stehen Oky, also grundtechnisch ist die Frage gelöst. Bleibt nurnoch die Bitte, dass du mir irgendwie erklären kannst, wie ich die "Suche" auf das Element "bla" beschränken kann. Also dass ich nur die Optionen aus dem Select-Feld mit dem Namen "bla" entsprechend vergleiche.
Ich könnte hier mit meiner selbstgebauten Stringbetween-Funktion arbeiten, aber das ist unschön, wenn man vergleichsweise doch eine wirklich gute Lösung nutzen könnte. Weiß halt nicht, ob das geht, kann mir aber nicht vorstellen, dass es nicht geht
Zum Thema Code-Tag: Ich kenn's nur farbig Wobei man selbst gepostete Code-Container nur dann farbig sieht, wenn man die Seite nach der Beitragserstellung aktualisiert
Danke dir auf jeden Fall bis hierher.
also wenn ich dich richtig verstanden habe wisst du mit der methode eine ganze website auswerten?
das geht nur wenn die website in gültigem XML geschireben ist was auch bei normalen XHTML seiten die man im internet findet eher selten ist.
zum einen liefern mache webseiten sehr fehlerhaftes html(tags werden geöffnet aber nicht geschlossen u.s.w.)
aber auch code wie dieser
kann man den selecteteten wert vom selct "name2" auslesen mit :
Code:
XDocument doc = XDocument.Parse(s1);
var querySelect = from xelement in doc.Descendants("select")
where xelement.Attribute("name") != null && xelement.Attribute("name").Value == "name2"
select xelement;
var gesuchtesSelect = querySelect.First();
var queryOptions = from simpleItem in gesuchtesSelect.Descendants("option")
where simpleItem.Attribute("selected") != null && simpleItem.Attribute("selected").Value == "selected"
select simpleItem;
var selectedOptionValue = queryOptions.First().Value;
[Joomla][HTML] modul in einer html datei verlinken? 11/11/2011 - Web Development - 1 Replies ich hab vorher im joomla forum schon ein thread geöffnet aber da antwortet mir niemand und ich ich langsam keine gedult mehr.. will heute noch weiter probieren und so.
----------------------------------------
Bei den Modulen gibt es ein leeres, wo man ein editor hat. Ist es möglich eine verlinkung zum modul in der html zu machen?
Hier ein beispiel vom aufbau meiner website: Vorstellung wie die website ungefähr sein soll, wo ich welche div container gemacht habe, wie das ganze zur zeit...
HTML Queelcodes auslesen und in ihnen suchen? 09/26/2010 - AutoIt - 20 Replies HI,
meine Frage ist wie kann ich mit AutoIT HTML Quellcodes auslesen und zwar das soll er machen :
1.Quellcode öffnen
2.ein Wort suchen
3.exestiert dieses Wort MsgBox öffnen
3.2.exestert es nicht Msgox mit error öffnen
Ich hoffe ihr könnt mir helfen
[HTML]HELP[/HTML]range hack and skill speed in extreme 08/21/2009 - Dekaron Private Server - 5 Replies hey guys i need a little help about range hack and skill speed in extreme
i already unpack the Data its all done..1! my problem is wer i can edit the range ang skill speed in extreme..! pls :):):):):)