c# – LINQ to XML – Elements()工作,但是Elements(XName)不起作用

c# – LINQ to XML – Elements()工作,但是Elements(XName)不起作用,第1张

概述以下是我的xml: <?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/repo 以下是我的xml:
<?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)不起作用所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1260130.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存