XMLファイルで文字列を見つける方法を知りたいのですが。
これが私が持っているXMLファイルだと言ってください(これらはSQLサーバーインスタンスですが、無関係です)
<?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>
したがって、ユーザーから任意の形式の文字列を取得します。たとえば、インスタンスのみを取得し、上記の場合はサーバーで始まるすべてのサーバー名をリストボックスに表示します。
instance1 \ server1
instance2 \serve2
など..これを実現する方法がわからない場合は、ストリームリーダーを開く必要がありますか、それともxmlファイルから文字列とブラウザを取得する必要がありますか?
更新しました
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();
}
私は単にテキストボックスでこれを取得しています:System.Linq.Enumerable + WhereSelectEnumerableIterator`2 [System.Xml.Linq.XElement、System.String]
強力なテキストUPDATE2
.csファイルコード
private void button1_Click(object sender、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は次のようになります
<ListBox Height="200" HorizontalAlignment="Left" Margin="200,44,0,0" x:Name="ListBox1" VerticalAlignment="Top" Width="237">