XML文件是这样的,大约有20个这样的节点(模块)。
<list>
<module code="ECSE502">
<code>ECSE502</code>
<name>Algorithms and Data structures</name>
<semester>1</semester>
<prerequisites>none</prerequisites>
<lslot>0</lslot>
<tslot>1</tslot>
<description>all about algorythms and data structers with totorials and inclass tests</description>
</module>
</list>
我做了以下代码。但是当我调试它时,它甚至没有进入foreach函数。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
namespace ModuleEnrolmentCW
{
class XMLRead
{
public string[] writeToXML(string s)
{
string text = s;
string[] arr = new string[6];
XmlDocument xml = new XmlDocument();
xml.Load("modules.xml");
XmlNodeList xnList = xml.SelectNodes("list/module[@code='" + text + "']");
foreach (XmlNode xn in xnList)
{
arr[0] = xn.SelectSingleNode("code").InnerText;
arr[1] = xn.SelectSingleNode("name").InnerText;
arr[2] = xn.SelectSingleNode("semester").InnerText;
arr[3] = xn.SelectSingleNode("prerequisites").InnerText;
arr[4] = xn.SelectSingleNode("lslot").InnerText;
arr[5] = xn.SelectSingleNode("tslot").InnerText;
}
return arr;
}
}
}
请告诉我哪里错了?
以下是代码的其余部分
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace ModuleEnrolmentCW
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
string selected;
private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
XMLRead x = new XMLRead();
selected = (string)listBox1.SelectedItem;
string[] arr2 = x.writeToXML(selected);
label11.Text = arr2[0];
}
}
}
答案 0 :(得分:1)
这一行:
XmlNodeList xnList = xml.SelectNodes("list/module[@code='" + text + "']");
应为:
XmlNodeList xnList = xml.SelectNodes("list/module"); //Does not answer full scope of the question
重新阅读问题后修改:
OP的代码在我的测试中运行良好。文件路径不正确,或传递到string s
的{{1}}与您正在读取节点的text
值的大小相匹配。
您拥有的Code
SelectNodes
区分大小写。
您似乎正在使用XPath V1.0,如果这是一个问题,它似乎不支持开箱即用的不敏感性。有关执行不区分大小写的XPath搜索的方法,请参阅此链接:http://blogs.msdn.com/b/shjin/archive/2005/07/22/442025.aspx
答案 1 :(得分:1)
确保为xml文件指定正确的路径。
这对我有用。
答案 2 :(得分:1)
您的代码是正确的,如果输入真的是您展示的,s
指向实际的现有代码。由于您是通过相对路径指向文件,因此请确保加载您真正期望的文件。
答案 3 :(得分:0)
发现错误。我向writeToXML方法传递了一个错误的值。传递代码,我已通过名称