我有一个数据对应于多个对象的XML文件。我正在尝试打开XML文件,循环查找特定的文件名并读取与此相关的所有值。如何读取特定的XML节点?
问题:
它永远不会有一个的XMLElement的名称和文件名之间的匹配。所以“我匹配当前打开的文件的名称”永远不会被打印。
我想要发生的事情:因此,当用户在OpenFileDialog中打开“dog.jpg”时,XML文档会被加载,它应该能够找到XML元素“Name”值dog.jpg并打印“我匹配当前打开的文件名”。
此外,我想知道如何获得像不同的距离值一样的匹配,我怎样才能读取其他相应的值?
代码在我打开方法:
string fileName = openFileDialog1.FileName; //file name of a JPEG file opened by a user
XmlDocument doc = new XmlDocument();
doc.Load(@"C:\Users\Desktop\TangramsTool\patterndata.xml");
XmlNodeList nodeList = doc.SelectNodes("/Patterns/Pattern");
foreach (XmlNode node in nodeList)
{
string text = node["Name"].InnerText; //or loop through its children as well
if (text.Equals(fileName))
{
Console.WriteLine("I match the currently open file's name: " + text);
}
else
{
Console.WriteLine("This node's name is : " + text);
}
}
我的XML文件:
<Patterns>
<Pattern>
<Name>dog.jpg</Name>
<PatternDistancesList>
<PatternDistance>278</PatternDistance>
<PatternDistance>380</PatternDistance>
</PatternDistancesList>
<Pattern/>
<Pattern>
<Name>cat.jpg</Name>
<PatternDistancesList>
<PatternDistance>278</PatternDistance>
<PatternDistance>380</PatternDistance>
</PatternDistancesList>
<Pattern/>
</Patterns>
你在节点列表中获得了什么? –
我得到了不同的 节点的列表,然后为每个节点读取“名称”。 –
Naaz
尝试在linq中找到答案。 – madan