LINQ to XML抛出了一个异常,我不知道为什么
本文关键字:一个 异常 为什么 我不知道 XML to LINQ | 更新日期: 2023-09-27 17:51:00
我有一个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的name值?
这是因为XML文档只需要有一个顶层"根"元素。另一方面,您的文档有两个顶级元素—即DatabaseInfo
和ShortcutPath
。
您需要修改XML文档,使其具有单个top元素。您可以通过添加人工根或将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>