<?xml version="1.0" encoding="utf-8"?>
<customUI onLoad="UI_Load" xmlns="somenamespace">
<commands>
<command id ="command1" onAction ="ExecuteCommand" />
</commands>
<ribbon>
<tabs>
<tab id="tab1">
<group id="group1">
....
</group>
<group id="group2">
....
</group>
<group id="group3">
....
</group>
<group id="group4">
....
</group>
</tab>
</tabs>
</ribbon>
</customUI>
我从程序集加载xml,
var xml = assembly.GetManifestResourceStream("mynamespace.myxml.xml");
if (xml != null)
{
using (Stream stream = ribbonxml)
{
XElement xdoc = XElement.Load(stream);
var elements = xdoc.XPathSelectElements("customUI/ribbon/tabs/tab/group");
}
}
xdoc.XPathSelectElements("customUI/ribbon/tabs/tab/group")
不返回任何内容
然后我xdoc.Element("customUI")
返回null,我可以在调试时查看xdoc中的xml元素。
我不知道为什么会这样,在我提出这个问题之前,我尝试了下面提到的所有建议(没有用)。
答案 0 :(得分:0)
//something like this
class Group
{
public string Id{ get; set; }
public string Field1{ get; set; }
public string FieldN { get; set; }
}
var groups = from xe in xdoc.Element("ribbon").Element("tabs").Elements("tab").Elements("group")
select new Group
{
Id= xe.Attribute("id").Value,
Field1= xe.Element("Field1").Value,
FieldN = xe.Element("FieldN ").Value
};
答案 1 :(得分:0)
为group创建一个类,并使用XElement.Descendants()方法选择XML中的所有组标记。
class Group
{
public string Id { get; set; }
//You can add other group content
}
XElement xmlFileContent = XElement.Load("filePath");
var groupXmlFormat = xmlFileContent.Descendants("group")
.Select(group =>
{
return new Group
{
Id=group.Attribute("id").Value,
};
}).ToList();