Ich würde gerne wissen, wie Sie eine Zeichenfolge in XML-Datei finden.Suchen Sie eine Zeichenfolge in XML
sagen, das ist die XML-Datei i haben (diese sind die SQL-Server-Instanzen btw, irrelevant)
<?xml version="1.0" encoding="utf-8" ?>
<Servernames>
<loc country="Lockheed">
<Servername>instance1\server1</Servername>
<Servername>instance2\server2</Servername>
<Servername>10.90</Servername>
</loc>
<loc country="SouthAmerica">
<Servername>Hide your heart</Servername>
<Servername>Bonnie Tyler</Servername>
<Servername>10.0</Servername>
</loc>
<loc country="Britian">
<Servername>Greatest\Hits</Servername>
<Servername>Dolly\Parton</Servername>
<Servername>this\is</Servername>
</loc>
</Servernames>
Also, was passiert ist, ich eine Zeichenfolge vom Benutzer in einem beliebigen Format zum Beispiel sagen, bekommen nur ich bekommen Instanz und dann möchte ich die Listbox alle Servernamen anzuzeigen, die mit dem Server im obigen Fall beginnt es
instance1 \ server1
instance2 \ serve2
und so weiter .. Nicht sicher, wie dies zu erreichen ist, muss ich Stream-Reader öffnen oder nur eine Zeichenfolge und Browser durch die XML-Datei erhalten?
AKTUALISIERT
private void button1_Click(object sender, RoutedEventArgs e)
{
textBox1.Clear();
string fileName = "c:\\users\\xxxx\\documents\\visual studio 2010\\Projects\\WpfApplication2\\WpfApplication2\\XML.xml";
var doc = XDocument.Load(fileName);
var findString = "Server";
var results = doc.Element("Servernames").Descendants("Servername").Where(d => d.Value.Contains(findString)).Select(d => d.Value);
listBox1.Items.Add(results.ToString());
textBox1.Text = results.ToString();
}
ich einfach bin immer diese in das Textfeld ein: System.Linq.Enumerable + WhereSelectEnumerableIterator`2 [System.Xml.Linq.XElement, System.String]
starken Text UPDATE2
.cs-Dateicode
private void button1_Click (Objektabsender, RoutedEventArgs e) { textBox1.Clear();
string fileName = "c:\\users\\xxxxx\\documents\\visual studio 2010\\Projects\\WpfApplication2\\WpfApplication2\\XML.xml";
var doc = XDocument.Load(fileName);
var findString = "Server";
var results = doc.Element("Servernames").Descendants("Servername").Where(d => d.Value.Contains(findString)).Select(d => d.Value);
Servers = new ObservableCollection<string>(results);
MessageBox.Show("THis is loaded");
}
XAML sieht wie folgt aus
<ListBox Height="200" HorizontalAlignment="Left" Margin="200,44,0,0" x:Name="ListBox1" VerticalAlignment="Top" Width="237">
Sie benötigen ein XDocument zu verwenden, nicht ein XPathDocument. Siehe aktualisierte Antwort unten. – Robaticus
enumerieren auf 'Ergebnisse' für zB.,' String.Join ("\ n", Ergebnisse) ' –
nichts wird angezeigt, wenn Sie den Code ändern. listBox1.Items.Add (String.Join ("\ n", Ergebnisse)); textBox1.Text = String.Join ("\ n", Ergebnisse); – JackyBoi