C# 从XML文件C中读取#
我正在尝试读取一个XML文档。现在,如果我正在阅读“/word/link1”,我可以调用信息,但一旦我深入“buttons/word/link1”,它就根本无法读取内部文本C# 从XML文件C中读取#,c#,xml,winforms,xmlreader,C#,Xml,Winforms,Xmlreader,我正在尝试读取一个XML文档。现在,如果我正在阅读“/word/link1”,我可以调用信息,但一旦我深入“buttons/word/link1”,它就根本无法读取内部文本 public void rxml() { XmlTextReader read = new XmlTextReader("C:\\myXmFile.xml"); XmlDocument doc = new XmlDocument(); doc.Load(read);
public void rxml()
{
XmlTextReader read = new XmlTextReader("C:\\myXmFile.xml");
XmlDocument doc = new XmlDocument();
doc.Load(read);
switch (P)
{
case "word":
label11.Text = "Microsoft Word Documents";
l1 = doc.SelectSingleNode("buttons/word/link1").InnerText = "hello";
p1 = doc.SelectSingleNode("buttons/word/path1").InnerText;
l2 = doc.SelectSingleNode("buttons/word/link2").InnerText = linkLabel2.Text;
p2 = doc.SelectSingleNode("buttons/word/path2").InnerText;
l3 = doc.SelectSingleNode("buttons/word/link3").InnerText = linkLabel3.Text;
p3 = doc.SelectSingleNode("buttons/word/path3").InnerText;
l4 = doc.SelectSingleNode("buttons/word/link4").InnerText = linkLabel4.Text;
p4 = doc.SelectSingleNode("buttons/word/path4").InnerText;
l5 = doc.SelectSingleNode("buttons/word/link5").InnerText = linkLabel5.Text;
p5 = doc.SelectSingleNode("buttons/word/path5").InnerText;
l6 = doc.SelectSingleNode("buttons/word/link6").InnerText = linkLabel6.Text;
p6 = doc.SelectSingleNode("buttons/word/path6").InnerText;
l7 = doc.SelectSingleNode("buttons/word/link7").InnerText = linkLabel7.Text;
p7 = doc.SelectSingleNode("buttons/word/path7").InnerText;
l8 = doc.SelectSingleNode("buttons/word/link8").InnerText = linkLabel8.Text;
p8 = doc.SelectSingleNode("buttons/word/path8").InnerText;
l9 = doc.SelectSingleNode("buttons/word/link9").InnerText = linkLabel9.Text;
p9 = doc.SelectSingleNode("buttons/word/path9").InnerText;
l10 = doc.SelectSingleNode("buttons/word/link10").InnerText = linkLabel10.Text;
p10 = doc.SelectSingleNode("buttons/word/path10").InnerText;
read.Close();
break;
case "excel":
label11.Text = "Microsoft Excel Documents";
l1 = doc.SelectSingleNode("buttons/excel/link1").InnerText = linkLabel1.Text;
p1 = doc.SelectSingleNode("buttons/excel/path1").InnerText;
l2 = doc.SelectSingleNode("buttons/excel/link2").InnerText = linkLabel2.Text;
p2 = doc.SelectSingleNode("buttons/excel/path2").InnerText;
l3 = doc.SelectSingleNode("buttons/excel/link3").InnerText = linkLabel3.Text;
p3 = doc.SelectSingleNode("buttons/excel/path3").InnerText;
l4 = doc.SelectSingleNode("buttons/excel/link4").InnerText = linkLabel4.Text;
p4 = doc.SelectSingleNode("buttons/excel/path4").InnerText;
l5 = doc.SelectSingleNode("buttons/excel/link5").InnerText = linkLabel5.Text;
p5 = doc.SelectSingleNode("buttons/excel/path5").InnerText;
l6 = doc.SelectSingleNode("buttons/excel/link6").InnerText = linkLabel6.Text;
p6 = doc.SelectSingleNode("buttons/excel/path6").InnerText;
l7 = doc.SelectSingleNode("buttons/excel/link7").InnerText = linkLabel7.Text;
p7 = doc.SelectSingleNode("buttons/excel/path7").InnerText;
l8 = doc.SelectSingleNode("buttons/excel/link8").InnerText = linkLabel8.Text;
p8 = doc.SelectSingleNode("buttons/excel/path8").InnerText;
l9 = doc.SelectSingleNode("buttons/excel/link9").InnerText = linkLabel9.Text;
p9 = doc.SelectSingleNode("buttons/excel/path9").InnerText;
l10 = doc.SelectSingleNode("buttons/excel/link10").InnerText = linkLabel10.Text;
p10 = doc.SelectSingleNode("buttons/excel/path10").InnerText;
read.Close();
break;
case "adobe":
label11.Text = "Adobe PDF Documents";
l1 = doc.SelectSingleNode("buttons/adobe/link1").InnerText = linkLabel1.Text;
p1 = doc.SelectSingleNode("buttons/adobe/path1").InnerText;
l2 = doc.SelectSingleNode("buttons/adobe/link2").InnerText = linkLabel2.Text;
p2 = doc.SelectSingleNode("buttons/adobe/path2").InnerText;
l3 = doc.SelectSingleNode("buttons/adobe/link3").InnerText = linkLabel3.Text;
p3 = doc.SelectSingleNode("buttons/adobe/path3").InnerText;
l4 = doc.SelectSingleNode("buttons/adobe/link4").InnerText = linkLabel4.Text;
p4 = doc.SelectSingleNode("buttons/adobe/path4").InnerText;
l5 = doc.SelectSingleNode("buttons/adobe/link5").InnerText = linkLabel5.Text;
p5 = doc.SelectSingleNode("buttons/adobe/path5").InnerText;
l6 = doc.SelectSingleNode("buttons/adobe/link6").InnerText = linkLabel6.Text;
p6 = doc.SelectSingleNode("buttons/adobe/path6").InnerText;
l7 = doc.SelectSingleNode("buttons/adobe/link7").InnerText = linkLabel7.Text;
p7 = doc.SelectSingleNode("buttons/adobe/path7").InnerText;
l8 = doc.SelectSingleNode("buttons/adobe/link8").InnerText = linkLabel8.Text;
p8 = doc.SelectSingleNode("buttons/adobe/path8").InnerText;
l9 = doc.SelectSingleNode("buttons/adobe/link9").InnerText = linkLabel9.Text;
p9 = doc.SelectSingleNode("buttons/adobe/path9").InnerText;
l10 = doc.SelectSingleNode("buttons/adobe/link10").InnerText = linkLabel10.Text;
p10 = doc.SelectSingleNode("buttons/adobe/path10").InnerText;
read.Close();
break;
case "powerpoint":
label11.Text = "Microsoft Powerpoint Documents";
l1 = doc.SelectSingleNode("buttons/powerpoint/link1").InnerText = linkLabel1.Text;
p1 = doc.SelectSingleNode("buttons/powerpoint/path1").InnerText;
l2 = doc.SelectSingleNode("buttons/powerpoint/link2").InnerText = linkLabel2.Text;
p2 = doc.SelectSingleNode("buttons/powerpoint/path2").InnerText;
l3 = doc.SelectSingleNode("buttons/powerpoint/link3").InnerText = linkLabel3.Text;
p3 = doc.SelectSingleNode("buttons/powerpoint/path3").InnerText;
l4 = doc.SelectSingleNode("buttons/powerpoint/link4").InnerText = linkLabel4.Text;
p4 = doc.SelectSingleNode("buttons/powerpoint/path4").InnerText;
l5 = doc.SelectSingleNode("buttons/powerpoint/link5").InnerText = linkLabel5.Text;
p5 = doc.SelectSingleNode("buttons/powerpoint/path5").InnerText;
l6 = doc.SelectSingleNode("buttons/powerpoint/link6").InnerText = linkLabel6.Text;
p6 = doc.SelectSingleNode("buttons/powerpoint/path6").InnerText;
l7 = doc.SelectSingleNode("buttons/powerpoint/link7").InnerText = linkLabel7.Text;
p7 = doc.SelectSingleNode("buttons/powerpoint/path7").InnerText;
l8 = doc.SelectSingleNode("buttons/powerpoint/link8").InnerText = linkLabel8.Text;
p8 = doc.SelectSingleNode("buttons/powerpoint/path8").InnerText;
l9 = doc.SelectSingleNode("buttons/powerpoint/link9").InnerText = linkLabel9.Text;
p9 = doc.SelectSingleNode("buttons/powerpoint/path9").InnerText;
l10 = doc.SelectSingleNode("buttons/powerpoint/link10").InnerText = linkLabel10.Text;
p10 = doc.SelectSingleNode("buttons/powerpoint/path10").InnerText;
read.Close();
break;
case "publisher":
label11.Text = "Microsoft Publisher Documents";
l1 = doc.SelectSingleNode("buttons/publisher/link1").InnerText = linkLabel1.Text;
p1 = doc.SelectSingleNode("buttons/publisher/path1").InnerText;
l2 = doc.SelectSingleNode("buttons/publisher/link2").InnerText = linkLabel1.Text;
p2 = doc.SelectSingleNode("buttons/publisher/path2").InnerText;
l3 = doc.SelectSingleNode("buttons/publisher/link3").InnerText = linkLabel1.Text;
p3 = doc.SelectSingleNode("buttons/publisher/path3").InnerText;
l4 = doc.SelectSingleNode("buttons/publisher/link4").InnerText = linkLabel1.Text;
p4 = doc.SelectSingleNode("buttons/publisher/path4").InnerText;
l5 = doc.SelectSingleNode("buttons/publisher/link5").InnerText = linkLabel1.Text;
p5 = doc.SelectSingleNode("buttons/publisher/path5").InnerText;
l6 = doc.SelectSingleNode("buttons/publisher/link6").InnerText = linkLabel1.Text;
p6 = doc.SelectSingleNode("buttons/publisher/path6").InnerText;
l7 = doc.SelectSingleNode("buttons/publisher/link7").InnerText = linkLabel1.Text;
p7 = doc.SelectSingleNode("buttons/publisher/path7").InnerText;
l8 = doc.SelectSingleNode("buttons/publisher/link8").InnerText = linkLabel1.Text;
p8 = doc.SelectSingleNode("buttons/publisher/path8").InnerText;
l9 = doc.SelectSingleNode("buttons/publisher/link9").InnerText = linkLabel1.Text;
p9 = doc.SelectSingleNode("buttons/publisher/path9").InnerText;
l10 = doc.SelectSingleNode("buttons/publisher/link10").InnerText = linkLabel1.Text;
p10 = doc.SelectSingleNode("buttons/publisher/path10").InnerText;
read.Close();
break;
case "access":
label11.Text = "Microsoft Access Documents";
l1 = doc.SelectSingleNode("buttons/access/link1").InnerText = linkLabel1.Text;
p1 = doc.SelectSingleNode("buttons/access/path1").InnerText;
l2 = doc.SelectSingleNode("buttons/access/link2").InnerText = linkLabel2.Text;
p2 = doc.SelectSingleNode("buttons/access/path2").InnerText;
l3 = doc.SelectSingleNode("buttons/access/link3").InnerText = linkLabel3.Text;
p3 = doc.SelectSingleNode("buttons/access/path3").InnerText;
l4 = doc.SelectSingleNode("buttons/access/link4").InnerText = linkLabel4.Text;
p4 = doc.SelectSingleNode("buttons/access/path4").InnerText;
l5 = doc.SelectSingleNode("buttons/access/link5").InnerText = linkLabel5.Text;
p5 = doc.SelectSingleNode("buttons/access/path5").InnerText;
l6 = doc.SelectSingleNode("buttons/access/link6").InnerText = linkLabel6.Text;
p6 = doc.SelectSingleNode("buttons/access/path6").InnerText;
l7 = doc.SelectSingleNode("buttons/access/link7").InnerText = linkLabel7.Text;
p7 = doc.SelectSingleNode("buttons/access/path7").InnerText;
l8 = doc.SelectSingleNode("buttons/access/link8").InnerText = linkLabel8.Text;
p8 = doc.SelectSingleNode("buttons/access/path8").InnerText;
l9 = doc.SelectSingleNode("buttons/access/link9").InnerText = linkLabel9.Text;
p9 = doc.SelectSingleNode("buttons/access/path9").InnerText;
l10 = doc.SelectSingleNode("buttons/access/link10").InnerText = linkLabel10.Text;
p10 = doc.SelectSingleNode("buttons/access/path10").InnerText;
read.Close();
break;
}
}
XML文件为了更方便地访问数据,您应该创建用于访问数据的类。通过将问题分解为不同的层次,它使整个问题更易于理解、调试和更新。我已经用这个方法创建了一个例子 要使用以下内容,您将获得word的
链接1
:
ButtonsXml buttons = new ButtonsXml("C:\\myXmFile.xml");
string link1 = buttons["word"][1].Link;
代码如下:
public class ButtonsXml
{
XElement self;
Dictionary<string, DataCollection> list = new Dictionary<string, DataCollection>();
public ButtonsXml(string file)
{
self = XElement.Load(file);
}
public DataCollection this[string name]
{
get
{
if (list.ContainsKey(name))
return list[name];
DataCollection c = new DataCollection(self.GetElement(name));
list.Add(name, c);
return c;
}
}
public void Save(string file)
{
self.Save(file);
}
}
public class DataCollection
{
XElement self;
public Dictionary<int, Element> list = new Dictionary<int,Element>();
public DataCollection(XElement self)
{
this.self = self;
}
public Element this[int index]
{
get
{
if (list.ContainsKey(index))
return list[index];
Element e = new Element(self, index);
list.Add(index, e);
return e;
}
}
}
public class Element
{
XElement parent;
int index;
public Element(XElement parent, int index)
{
this.parent = parent;
this.index = index;
}
public string Path
{
get { return parent.GetString("path" + index.ToString(), string.Empty); }
set { parent.Set("path" + index.ToString(), value, XElementConversions.ELEMENT); }
}
public string Link
{
get { return parent.GetString("link" + index.ToString(), string.Empty); }
set { parent.Set("link" + index.ToString(), value, XElementConversions.ELEMENT); }
}
}
@Marshal我认为发布一个简短的XML文件可能是一个好主意,该文件导致代码失败。请提供XML以及您遇到的异常/问题。rxml()的完整代码:)我很困惑-您的示例代码设置的是
按钮/word/link1
和按钮/word/link2
节点的值,而不是获取它们-为什么?您还应该提供一个简短的XML示例和有关抛出的异常的详细信息。由于这个问题,它都位于按钮中。我想用标题“MLE Dash”来设置它,但是如果我这样做了,我就无法读取URL或文本。现在我对word、adobe等元素也有同样的问题。请在这里发布XML的摘录。因此提供了代码格式。
buttons["word"][1].Link = "new value";