我有一个像这样的xml文件
< insrtuction name = inst1>
< destnation>
<连接> con 1的 < /连接> < /目的地>< destnation>
<连接> CON2 < /连接> < /目的地>< /指令>
< insrtuction name = inst2>
< destnation>
<连接> CON3 < /连接> < /目的地>< destnation>
<连接> CON4 < /连接> < /目的地>< /指令>
我必须得到所有的联系。我编写的代码
private void button5_Click(object sender, EventArgs e)
{
xml = new XmlDocument();
xml.Load("D:\\connections.xml");
string text = "";
XmlNodeList xnList = xml.SelectNodes("/instruction/destination");
foreach (XmlNode xn in xnList)
{
string configuration = xn["connection"].InnerText;
text = text + configuration + "\r\n" + "\r\n";
}
textBox1.Text=text;
}
我得到的输出是
con1
con2
con3
con4
根据我的新要求,输出应该是
Instruction Name : inst1
connection: con1
connection: con1
Instruction Name : inst2
connection: con3
connection: con4
我是.net的新手,我正在使用2.0框架工作,我不能使用LINQ。感谢
答案 0 :(得分:2)
尝试这样:
xml = new XmlDocument();
xml.Load("D:\\connections.xml");
string val="";
string text = "";
foreach (XmlNode child in xml.DocumentElement.ChildNodes)
{
if (child.NodeType == XmlNodeType.Element)
{
//MessageBox.Show(child.Name + ": " + child.InnerText.ToString());
node = child.Name; //here you will get node name
if (node.Equals("Instruction"))
{
val = child.InnerText.ToString(); //value of the node
//MessageBox.Show(node + ": " + val);
}
}
}
答案 1 :(得分:1)
这样的事情,有一个内循环:
XmlNodeList xnList = xml.SelectNodes("/instruction");
foreach (XmlElement xn in xnList)
{
text += "Instruction Name : " + xn.GetAttribute("name") + Environment.NewLine + Environment.NewLine;
foreach (XmlElement cn in xn.SelectNodes("connection"))
{
text += "Connection : " + xn.InnerText + Environment.NewLine + Environment.NewLine;
}
}
答案 2 :(得分:1)
你可以这样写:
private void button5_Click(object sender, EventArgs e)
{
xml = new XmlDocument();
xml.Load("D:\\connections.xml");
StringBuilder sb = new StringBuilder();
XmlNodeList xnList = xml.SelectNodes("/instruction");
foreach (XmlNode xn in xnList)
{
sb.AppendLine(xn.Attribute["name"].Value);
foreach(XmlNode subNodes in xn.SelectNodes("destination/connection") {
sb.AppendLine(subNodes.InnerText);
}
}
textBox1.Text=sb.ToString();
}
但是,我认为这是一个很容易解决的问题。这里没有技术挑战。我建议你参加培训,阅读一本书并深入了解文档。
PS:不是使用StringBuilder
而不是字符串连接......