【发布时间】:2015-12-18 22:21:24
【问题描述】:
我有一个 XML 文件,其中的数据对应于多个对象。我正在尝试打开 XML 文件,循环查找特定文件名并读取与之相关的所有值。
问题:
XMLElement 的名称和文件名之间永远不会匹配。所以“我匹配当前打开的文件名”永远不会被打印出来。
我想要发生的事情: 因此,当用户在 OpenFileDialog 中打开“dog.jpg”时,XML 文档会被加载,它应该能够找到 XML 元素“名称”与值 dog.jpg 并打印“我匹配当前打开的文件的名称”。
另外,我想知道如何在获得不同距离值等匹配后读取其他对应值?
我的 Open 方法中的代码:
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>
【问题讨论】:
-
你在节点列表中得到了什么?
-
我得到一个不同
节点的列表,然后我为每个节点读取“名称”。 -
尝试在linq中寻找答案。
-
XML 区分大小写,你确定你有 dog.jpg 作为文件名吗?
-
啊,愚蠢的错误>.