首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

关于xml SelectSingleNode取值的有关问题

2012-03-22 
求助关于xml SelectSingleNode取值的问题xml文件?xml version1.0 encodingutf-8?Report xmlns:rd

求助关于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 出来的每次都是第一个  弄了好长时间也没弄明白为什么。

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

热点排行