【发布时间】:2013-10-08 20:17:34
【问题描述】:
我正在尝试从我的 xml 文件中的节点加载数据,以使它们发布在列表框中。 这是我的 xml 文件的样子。
<?xml version="1.0" encoding="utf-8"?>
<MovieData xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Movie>
<Name>Death Race</Name>
<Type>Action</Type>
<Type>Adventure</Type>
<Rating>R</Rating>
<Disk>Blu-Ray</Disk>
</Movie>
<Movie>
<Name>Death Race 2</Name>
<Type>Action</Type>
<Type>Adventure</Type>
<Rating>R</Rating>
<Disk>Blu-Ray</Disk>
</Movie>
</MovieData>
这就是我想要做的。
try
{
XmlDocument doc = new XmlDocument();
doc.LoadXml(movieListXML);
XmlNodeList nodeList = doc.SelectNodes("/MovieData[@*]");
foreach (XmlNode xn in nodeList)
{
XmlNode movie = xn.SelectSingleNode("Movie");
if (movie != null)
{
movieTypeListBox.Items.Add(movie["Name"].InnerText);
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
更新的代码仍有问题。它只显示一个电影名称,而不是所有电影名称。
try
{
XmlDocument doc = new XmlDocument();
doc.Load(movieListXML);
XmlNodeList nodeList = doc.SelectNodes("/MovieData");
foreach (XmlNode xn in nodeList)
{
XmlNode movie = xn.SelectSingleNode("Movie");
if (movie != null)
{
movieTypeListBox.Items.Add(movie["Name"].InnerText);
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
谁能告诉我问题出在哪里?
另一个问题:谁能告诉我如何按电影名称的字母顺序组织数据?
【问题讨论】:
-
在
doc.loadXML方法中出现错误(代码的哪一行)? -
我怀疑问题在于它正在尝试读取此数据: 但由于它有 ?在开始时。我的建议是改用 DataGrid,然后根据需要从中获取数据:)
-
顺便问一下,
movieListXML是在哪里定义的? -
一开始就定义了。在初始化方法中。它是xml文件的路径。这是正确的,因为它可以让我添加内容并且不会引发错误。
-
Data at the root level is invalid 的可能副本。当你应该使用
Load时,你正在使用LoadXml。
标签: xml c#-4.0 xmldocument