我正在编写一个应用程序,我需要从XML文档中提取信息。
我的XML文档存储在我的项目bin / Debug文件中。
我无法让它发挥作用。
名为informationData的XML文档:
<xml>
<information>
<name >stian</name>
<surname>Kruger</surname>
<tel>0825514302</tel>
<photo>1234JLJ.jpg</photo>
</information>
</xml>
我的通话代码:
private void btnReadXML_Click(object sender, EventArgs e)
{
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load("informationData.xml");
XmlNodeList dataNodes = xmlDoc.SelectNodes("/information");
foreach (XmlNode node in dataNodes)
{
Name = node.SelectSingleNode("name").InnerText;
Surname = node.SelectSingleNode("surname").InnerText;
TelNumber = Convert.ToInt32(node.SelectSingleNode("tel").InnerText);
}
}
答案 0 :(得分:5)
您的XPath选择器错误。替换:
XmlNodeList dataNodes = xmlDoc.SelectNodes("/information");
使用:
XmlNodeList dataNodes = xmlDoc.SelectNodes("//information");
或与:
XmlNodeList dataNodes = xmlDoc.DocumentElement.SelectNodes("information");
还要确保XML文件与正在运行的可执行文件存在于同一文件夹中(您说bin/Debug/informationData.xml
)。如果XML文件是Visual Studio项目的一部分,则可以在Copy to Output Directory
到Copy if newer
的属性集中选择它。这样,每次编译项目时,VS都会自动将XML文件复制到此输出文件夹。
答案 1 :(得分:0)
您可以使用此代码
<?xml version="1.0" encoding="utf-8" ?>
<information>
<name >stian</name>
<surname>Kruger</surname>
<tel>0825514302</tel>
<photo>1234JLJ.jpg</photo>
</information>
var xmlDoc = XDocument.Load("informationData.xml");
var name = xmlDoc.Element("name").Value;
var surname = xmlDoc.Element("surname").Value;
var telNumber = Convert.ToInt32(xmlDoc.Element("tel").Value);
答案 2 :(得分:-1)
将<?xml version="1.0" encoding="utf-8"?>
添加为XML文件中的第一行