我有一个XML文档,其中包含我的数据,相同节点字段的多个条目(StudentID = FirstName,LastName等)。如何将节点转换为每个StudentID部分的字符串值?
答案 0 :(得分:4)
你没有多说xml是什么样的。但它可能会是这样的:
string xml = "<nodes><studentid><firstname>Name</firstname><lastname>last</lastname></studentid></nodes>";
XmlDocument doc = new XmlDocument();
doc.LoadXml(xml);
foreach (XmlNode node in doc.SelectNodes("//studentid"))
{
string first = node["firstname"].InnerText;
string last = node["lastname"].InnerText;
}
如果数据属于属性,请使用以下内容:
string first = node.Attributes["firstname"].Value;
如果您有架构,也可以查看linq for xml。
答案 1 :(得分:0)
您是在寻找节点的innerText(标签内的值,而不是标签属性数据)还是outerXml(包含所有标签数据)?
另外,您使用的是CDATA吗?你还需要做更多的工作才能正确地获取数据。
或者,您是否想要一次性使用 - 在这种情况下,您将使用XSLT转换。
答案 2 :(得分:0)
从http://www.csharp-examples.net/xml-nodes-by-name/
复制和编辑//on button click before the following:
XmlDocument xml = new XmlDocument();
xml.LoadXml(myXmlString); // suppose that myXmlString contains "<Names>...</Names>"
XmlNodeList xnList = xml.SelectNodes("/Names/Name");
StringBuilder sb = new StringBuilder();
string entry = "Name: {0} {1}\r\n";
foreach (XmlNode xn in xnList)
{
string firstName = xn["FirstName"].InnerText;
string lastName = xn["LastName"].InnerText;
sb.AppendFormat(entry, firstName, lastName);
}
MessageBox.Show(sb.ToString());