作者热门文章
- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我只能使用 .NET 2.0 框架来创建 XML 文档(> 1000 行)。
文档的信息是从 Windows 注册表中检索的。 XML 是使用 2 个 for 循环编写的,在这些循环中,我调用 3 .ToString() 方法来转换检索到的数据。
正如预期的那样,创建 XML 文档需要很长时间。我想知道我可以做些什么来优化它。
public static void InitiateApp()
{
const string regadd = "SOFTWARE" + "\\" + "\\" + "Microsoft" + "\\" + "Windows NT" + "\\" + "CurrentVersion" + "\\Fonts";
RegistryKey regkey = Registry.LocalMachine.OpenSubKey(regadd);
XmlWriterSettings settings = new XmlWriterSettings();
settings.CloseOutput = true;
settings.Indent = true;
settings.IndentChars = "\t";
settings.NewLineChars = "\r\n";
settings.NewLineOnAttributes = true;
settings.OmitXmlDeclaration = true;
XmlWriter w = XmlWriter.Create("c:\\out.xml",settings);
foreach (FontFamily font in FontFamily.Families)
{
w.WriteStartElement("FontFamily");
int keyCount = 0;
foreach (string key in regkey.GetValueNames())
{
if(regkey.GetValueNames()[keyCount].ToString().Contains(font.Name))
{
w.WriteStartElement("FontName",regkey.GetValueNames()[keyCount].ToString());
w.WriteElementString("FontFile",regkey.GetValue(key).ToString());
w.WriteEndElement();
}
keyCount++;
}
w.WriteEndElement();
}
w.Flush();
}
最佳答案
将对 GetValueNames
的多次调用移出循环并初始化一个字符串数组。这至少会带来一些小的改进。
string[] vals = regkey.GetValueNames();
XmlWriter w = XmlWriter.Create("c:\\out.xml",settings);
foreach (Xtype a in all_a)
{
w.WriteStartElement("newElement");
int keyCount = 0;
foreach (YType b in all_b)
{
if(vals[keyCount].ToString().Contains(a.name))
{
w.WriteStartElement("a_name",vals[keyCount].ToString());
w.WriteElementString("b_name",regkey.GetValue(key).ToString());
w.WriteEndElement();
}
关于c# - 如何优化XML的写法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7445659/
我正在尝试更改 NSAttributedString 中的写入方向。但是,我真的很难弄清楚该怎么做。 CTFontRef fontRef = CTFontCreateWithName((CFStrin
环境准备 数据库版本:MySQL 5.7.20-log 建表 SQL DROP TABLE IF EXISTS `t_ware_sale_statistics`; CREATE TABLE `t_wa
我确定有一种更惯用的 ruby 方式来编写下面的代码: @var = obj['blah'] unless obj['blah'].nil? 我有很多事情要做(见下文),一定有更好的方法! @nu
我是一名优秀的程序员,十分优秀!