从xml提取节点数据 [英] Extract nodes data from xml

查看:117
本文介绍了从xml提取节点数据的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有这样的xml:

<People>
  <PersonID>5</PersonID>
  <PersonID>7</PersonID>
  <PersonID>9</PersonID>
</People>

我想创建一个带有所有id的字符串,例如: 5,7,9 。
我知道可以通过一个简单的循环来实现,但是由于此代码每秒被称为100倍的时间,因此我想使其成为最快的方法。

I would like to create a string with all the id's, like this: "5,7,9". I know it's possible with a simple loop, but since this code will be called 100's of time a second, I would like to make it the fastest possible way.

我正在使用 C#Framework 4.0。

我当前的代码:

XmlDocument doc = new XmlDocument();
XmlNodeList nodeList;
StringBuilder strXml = new StringBuilder();
doc.LoadXml(sXmlQuery);
nodeList = doc.SelectNodes("//PersonID");
if (nodeList != null)
{
    foreach (XmlNode node in nodeList)
    {
        strXml.Append(node.InnerText.Trim());
        strXml.Append(",");
    }
}


推荐答案

您可以将 LINQ to XML 字符串。加入,例如:

XDocument xmlDoc = XDocument.Parse(@"<People>
                                      <PersonID>5</PersonID>
                                      <PersonID>7</PersonID>
                                      <PersonID>9</PersonID>
                                    </People>");
var val = xmlDoc.Descendants("People")
                 .SelectMany(r => r.Elements("PersonID"))
                 .Select(r => r.Value);
string str = string.Join(",", val);

str 将为 str = 5,7,9

这篇关于从xml提取节点数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆