C#Xml节点到字符串

时间:2009-10-30 23:48:35

标签: xml string

我有一个XML文档,其中包含我的数据,相同节点字段的多个条目(StudentID = FirstName,LastName等)。如何将节点转换为每个StudentID部分的字符串值?

3 个答案:

答案 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());