读书人

关于xml SelectSingleNode取值的有关

发布时间: 2012-03-22 17:43:57 作者: rapoo

求助关于xml SelectSingleNode取值的问题
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">
<DataSources>
<DataSource Name="ds">
<ConnectionProperties>
<DataProvider>System.Data.DataSet</DataProvider>
<ConnectString>/* Local Connection */</ConnectString>
</ConnectionProperties>
<rd:DataSourceID>4601aaa3-4033-415b-b89f-d06d9bb1c2a4</rd:DataSourceID>
</DataSource>
</DataSources>
<Body>
<ReportItems>
<Textbox Name="Textbox1">
<CanGrow>true</CanGrow>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value>M型及二维</Value>
<Style>
<FontFamily>宋体</FontFamily>
</Style>
</TextRun>
</TextRuns>
<Style>
<TextAlign>Center</TextAlign>
</Style>
</Paragraph>
</Paragraphs>
<rd:DefaultName>Textbox1</rd:DefaultName>
<Top>0.03175cm</Top>
<Left>0.03306cm</Left>
<Height>0.6cm</Height>
<Width>10.22459cm</Width>
<Style>
<Border>
<Style>Solid</Style>
</Border>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>
</Style>
</Textbox>
<Textbox Name="Textbox2">
<CanGrow>true</CanGrow>
<KeepTogether>true</KeepTogether>
<Paragraphs>
<Paragraph>
<TextRuns>
<TextRun>
<Value>主

脉</Value>
<Style>
<FontFamily>宋体</FontFamily>
</Style>
</TextRun>
</TextRuns>
<Style>
<TextAlign>Center</TextAlign>
</Style>
</Paragraph>
</Paragraphs>
<rd:DefaultName>Textbox1</rd:DefaultName>
<Top>0.63175cm</Top>
<Left>0.03306cm</Left>
<Height>1.8cm</Height>
<Width>0.96542cm</Width>
<ZIndex>1</ZIndex>
<Style>
<Border>
<Style>Solid</Style>
</Border>
<PaddingLeft>2pt</PaddingLeft>
<PaddingRight>2pt</PaddingRight>
<PaddingTop>2pt</PaddingTop>
<PaddingBottom>2pt</PaddingBottom>


</Style>
</Textbox>
</ReportItems>
<Height>4.08251in</Height>
<Style />
</Body>
<Width>8.10512in</Width>
<Page>
<PageHeight>29.7cm</PageHeight>
<PageWidth>21cm</PageWidth>
<LeftMargin>2cm</LeftMargin>
<RightMargin>2cm</RightMargin>
<TopMargin>2cm</TopMargin>
<BottomMargin>2cm</BottomMargin>
<ColumnSpacing>0.13cm</ColumnSpacing>
<Style />
</Page>
<rd:ReportID>a811afcc-eafd-4665-86e4-00f39a37878a</rd:ReportID>
<rd:ReportUnitType>Cm</rd:ReportUnitType>
</Report>

代码

C# code
XmlNamespaceManager xnm = new XmlNamespaceManager(xml.NameTable);            xnm.AddNamespace("rd", "http://schemas.microsoft.com/SQLServer/reporting/reportdesigner");            xnm.AddNamespace("default", "http://schemas.microsoft.com/sqlserver/reporting/2008/01/reportdefinition");            xnm.PushScope();            XmlNodeList xnl = xml.SelectNodes(                "//default:Report//default:Body//default:ReportItems//default:Textbox", xnm);            Textbox[] tb = new Textbox[xnl.Count];            for (int i = 0; i < tb.Length; i++)            {                XmlNode x = xnl[i].SelectSingleNode("//default:Paragraphs//default:Paragraph//default:TextRuns//default:Value", xnm);                Console.WriteLine(xnl[i].InnerText+x.InnerXml);            }



xnl[i].SelectSingleNode 出来的每次都是第一个  弄了好长时间也没弄明白为什么。

[解决办法]
遍历期结点期间,设置断点进行跟踪先确定问题,你再试一下。

读书人网 >C#

热点推荐