我有一个类似
的XML文件<DatabaseInfo>
<DatabaseInformation>
<name>\\server\path\HelpDesk.accdb</name>
</DatabaseInformation>
</DatabaseInfo>
<ShortcutPath>
<ShortcutPathInformation>
<name>Y:\Shortcuts</name>
</ShortcutPathInformation>
</ShortcutPath>
和我的C#代码看起来像
var result = (from ele in XDocument.Load(@"C:\Srptupd\Database.xml").Descendants("DatabaseInformation")
select ele).FirstOrDefault();
if (result != null)
{
//
}
我得到一个例外
There are multiple root elements. Line 6, position 2.
如何获取DatabaseInformation和ShortcutPathInformation的名称值?
答案 0 :(得分:2)
这是因为XML文档需要只有一个顶级&#34; root&#34;元件。另一方面,您的文档有两个顶级元素 - 即DatabaseInfo
和ShortcutPath
。
您需要修复XML文档才能拥有一个顶级元素。您可以通过添加人工根或将XML拆分为两个来完成此操作。
以下是添加人工根的步骤:
<?xml version="1.0" encoding="UTF-8"?>
<DbAndShortcuts>
<DatabaseInfo>
<DatabaseInformation>
<name>\\server\path\HelpDesk.accdb</name>
</DatabaseInformation>
</DatabaseInfo>
<ShortcutPath>
<ShortcutPathInformation>
<name>Y:\Shortcuts</name>
</ShortcutPathInformation>
</ShortcutPath>
</DbAndShortcuts>
将文档拆分为两部分可能是另一种有效的解决方案:
<?xml version="1.0" encoding="UTF-8"?>
<!-- C:\Srptupd\Database.xml -->
<DatabaseInfo>
<DatabaseInformation>
<name>\\server\path\HelpDesk.accdb</name>
</DatabaseInformation>
</DatabaseInfo>
<!-- C:\Srptupd\Shortcut.xml -->
<?xml version="1.0" encoding="UTF-8"?>
<ShortcutPath>
<ShortcutPathInformation>
<name>Y:\Shortcuts</name>
</ShortcutPathInformation>
</ShortcutPath>