<?xml version="1.0" enCoding="utf-8"?><Report xmlns:rd="http://schemas.microsoft.com/sqlServer/reporting/reportdesigner" xmlns="http://schemas.microsoft.com/sqlserver/reporting/2008/01/reportdeFinition"> <Body> <ReportItems> <TextBox name="txtCurrentDate"> <Cangrow>true</Cangrow> <KeepTogether>true</KeepTogether> <Paragraphs> <Paragraph> <TextRuns> <TextRun> <Value>=Today()</Value> <Style> <FontWeight>Medium</FontWeight> <Format>d</Format> </Style> </TextRun> </TextRuns> <Style> <TextAlign>left</TextAlign> </Style> </Paragraph> </Paragraphs> <left>0.36958in</left> <Height>0.22917in</Height> <WIDth>1in</WIDth> <Style> <border> <Style>None</Style> </border> <paddingleft>2pt</paddingleft> <paddingRight>2pt</paddingRight> <paddingtop>2pt</paddingtop> <paddingBottom>2pt</paddingBottom> </Style> </TextBox> <TextBox name="txtname"> <Cangrow>true</Cangrow> <KeepTogether>true</KeepTogether> <Paragraphs> <Paragraph> <TextRuns> <TextRun> <Value>Mark Wilkinson</Value> <Style /> </TextRun> </TextRuns> <Style /> </Paragraph> </Paragraphs> <top>0.22917in</top> <left>0.36958in</left> <Height>0.20833in</Height> <WIDth>3.22917in</WIDth> <ZIndex>1</ZIndex> <Style> <border> <Style>None</Style> </border> <paddingleft>2pt</paddingleft> <paddingRight>2pt</paddingRight> <paddingtop>2pt</paddingtop> <paddingBottom>2pt</paddingBottom> </Style> </TextBox> </ReportItems> <Height>6.01667in</Height> <Style /> </Body> <WIDth>7.92333in</WIDth> </Report>
我想获取所有的TextBox名称和值.这是我尝试的,它不工作:
Xdocument data = Xdocument.Load("..\..\testxml.rdl"); var elements = from c in data.Elements("ReportItems") select c; foreach (var element in elements) { Console.Writeline("Element : " + element.Attribute("name").Value); } Console.ReadKey();
但是当我将查询更改为这样的时候
var elements = from c in data.Elements().Elements().ElementAt(0).Elements().ElementAt(0).Elements() select c;
有用.
在这方面的任何帮助都非常感谢.
编辑:在答案的帮助下,我得到了所需的结果.非常感谢 :)
Xdocument data = Xdocument.Load("..\..\testxml.rdl"); Xnamespace ns = data.Root.name.namespace; var elements = from c in data.Descendants(ns + "TextBox") select c; foreach (var element in elements) { Console.Writeline("Element : " + element.Attribute("name").Value); } Console.ReadKey();
TIA.
拉贾
解决方法 您需要考虑到命名空间:Xnamespace df = data.Root.name.namespace;
然后使用df“foo”在根元素中定义的命名空间中选择具有本地名称foo的元素.
正如已经提到的,你可能想要选择后代,而不是子元素:
var elements = from c in data.Descendants(df + "TextBox") select c;总结
以上是内存溢出为你收集整理的c# – LINQ to XML – Elements()工作,但是Elements(XName)不起作用全部内容,希望文章能够帮你解决c# – LINQ to XML – Elements()工作,但是Elements(XName)不起作用所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)