【发布时间】:2013-05-07 16:15:07
【问题描述】:
我有一个这样的 xml:
<People>
<PersonID>5</PersonID>
<PersonID>7</PersonID>
<PersonID>9</PersonID>
</People>
我想创建一个包含所有 id 的字符串,例如:“5,7,9”。 我知道可以通过一个简单的循环来实现,但由于此代码每秒会调用 100 次,因此我想让它成为最快的方式。
我正在使用 C# 框架 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?
-
alfdev - 你能举个例子吗?
-
还是 XPath? stackoverflow.com/questions/5279786/performance-of-xpath-vs-dom - Michael Kay 答案非常好,从 XPath 和 DOM 之间的角度来看
-
我认为您的代码已经接近最快的方法。我能提出的唯一建议是在
if的主体内创建StringBuilder,这样如果没有节点集就不会生成StringBuilder。 StringBuilder 中的字符串也将以逗号结尾。您需要去掉最后一个逗号。