我想知道如何在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