缺少根元素.例外
本文关键字:例外 元素 | 更新日期: 2023-09-27 17:55:34
我想像这样使用 linq to xml 创建 XML 文件
<?xml version="1.0" encoding="utf-8"?>
<Configuration>
<Settings>
<UseStreemCodec value="false" />
<SipPort value="5060"/>
<H323Port value="1720" />
</Settings>
<IncomingCallsConfiguration>
</IncomingCallsConfiguration>
<OutGoingCallsConfiguration>
<Devices>
</Devices>
</OutGoingCallsConfiguration>
</Configuration>
我尝试此代码,但给了我一个Root element is missing.
例外
public void CreatXmlConfigurationFileIfNotFoundWithDefultTags(string path)
{
if (!File.Exists(path))
{
try
{
File.Create(path).Close();
XDocument document = XDocument.Load(path);
var setting = new XElement("Settings",
new XElement("UseStreemCodec", new XAttribute("value", "false")),
new XElement("SipPort", new XAttribute("value", "5060")),
new XElement("H323Port", new XAttribute("value", "1720"))
);
document.Add(new XElement("Configuration", setting,
new XElement("IncomingCallsConfiguration"),
new XElement("OutGoingCallsConfiguration")));
document.Save(path);
}
catch (Exception e)
{
Trace.WriteLineIf(Logger.logSwitch.TraceError, e.Message);
}
}
}
您可以简单地保存XElement
这是root。而且在创建新的 xml 文件时,您无需加载任何内容:
public void CreatXmlConfigurationFileIfNotFoundWithDefultTags(string path)
{
if (!File.Exists(path))
{
try
{
var setting = new XElement("Settings",
new XElement("UseStreemCodec", new XAttribute("value", "false")),
new XElement("SipPort", new XAttribute("value", "5060")),
new XElement("H323Port", new XAttribute("value", "1720"))
);
var config = new XElement("Configuration", setting,
new XElement("IncomingCallsConfiguration"),
new XElement("OutGoingCallsConfiguration")));
config.Save(path); // save XElement to file
}
catch (Exception e)
{
Trace.WriteLineIf(Logger.logSwitch.TraceError, e.Message);
}
}
}
如果你想使用XDocument(在你的情况下不需要),那么只需创建新的XDocument,而不是加载不存在的文件:
XDocument document = new XDocument();
var setting = new XElement("Settings",
new XElement("UseStreemCodec", new XAttribute("value", "false")),
new XElement("SipPort", new XAttribute("value", "5060")),
new XElement("H323Port", new XAttribute("value", "1720"))
);
document.Add(new XElement("Configuration", setting,
new XElement("IncomingCallsConfiguration"),
new XElement("OutGoingCallsConfiguration")));
document.Save(path);
好吧,你尝试用XDocument.Load()"读取/解析"一个新的空文档
File.Create(path).Close();
XDocument document = XDocument.Load(path);
XDocument.Load()
想要一个正确的 XML 文件...他没有(文件为空)!
所以你可以做
var document = new XDocument();
//...
document.Save(path);