我需要获取一个SubTopic元素的值,该元素的attribute
名为“Name”,具有特定值。我是这样做的;
IEnumerable<XElement> list =
(from el in xdoc.Elements()
where (string)el.Attribute("Name") == "creatingTests"
select el);
该集合没有元素。
我尝试使用xdoc.Elements("SubTopic")
而不是空参数,但没有成功。
我的XML文件结构;
<?xml version="1.0" encoding="windows-1250" ?>
<Help Title="TestTool - tematy pomocy">
<Topic Name="creatingTests" Title="Tworzenie testów">
<SubTopic Name="saveload" Title="Zapis i odczyt z pliku">
Content
</SubTopic>
</Topic>
</Help>
如何获取帮助/主题(Name =“creatingTests”)的值?
xdoc
当然是加载了xml的XDocument
对象,它确实包含了我文件的内容。
答案 0 :(得分:3)
xdoc.Elements()
只返回一个元素 - XML树的根(在您的示例中为<Help>
元素。
将您的查询更改为:
IEnumerable<XElement> list =
(from el in xdoc.Root.Elements()
where (string)el.Attribute("Name") == "creatingTests"
select el);
它返回带有一个元素的集合。使用First
或FirstOrDefault
将其作为单个项目,而不是集合:
XElement item = (from el in xdoc.Root.Elements()
where (string)el.Attribute("Name") == "creatingTests"
select el).FirstOrDefault();
答案 1 :(得分:0)
答案 2 :(得分:0)
这是使用 System.Xml.XPath :
的替代方法using System.Xml.Linq;
using System.Xml.XPath;
class Program
{
static void Main(string[] args)
{
var xdoc = XDocument.Load("input.xml");
var subTopic = xdoc
.XPathSelectElement("//Topic[@Name='creatingTests']/SubTopic");
}
}
答案 3 :(得分:0)
非常简单和最简单的方法是使用XSLT ..
1.创建一个XSLT模板。
2.拨打c#。
xmlDaynamic.DocumentContent = "Your XML Input";
xmlDaynamic.TransformSource = "YourTemplate with extension";
3.你的任务已经完成。
4.xmlDaynamic是一个服务器控件。