我想知道如何在XML文件中查找字符串。在XML中查找字符串
說這是XML文件,我有(這是SQL Server實例順便說一句,不相關)
<?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>
所以會發生什麼是我得到任何格式的用戶的字符串,例如說我只得到實例,然後我想在列表框中顯示所有以在上述情況下服務器啓動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">
您需要使用一個XDocument,而不是一個XPathDocument中。見下面更新的答案。 – Robaticus 2012-04-13 04:17:28
枚舉''結果'前例,'String.Join(「\ n」,結果)' – 2012-04-13 06:11:43
如果將代碼更改爲此,則不顯示任何內容。 listBox1.Items.Add(String.Join(「\ n」,results)); textBox1.Text = String.Join(「\ n」,results); – JackyBoi 2012-04-13 06:36:58