问题描述
大家好,我有这样的一个xml文档,<课程表班级="软件XX班"学年="2008-2009"学期="2"><星期一><时段值="12"><科目>语文</科目><教师>张三</教师><教室>1101</教室></时段><时段值="34"><科目>数学</科目><教师>李四</教师><教室>2103</教室></时段></星期一>这只是一部分,我想用以下的代码在空间中显示:foreach(XmlNodeeleNodeinroot.ChildNodes){if(eleNode.Name.ToString()=="星期一"){foreach(XmlNodesubNodeineleNode.ChildNodes){if(subNode.Name=="时段"||subNode.Attributes["12"].ToString()=="12"){stringss=null;stringll=null;stringmm=null;stringnn=null;foreach(XmlNodelnodeinsubNode.ChildNodes){if(lnode.Name=="科目")ss=(lnode.Value).ToString();if(lnode.Name.ToString()=="教师")ll=(lnode.Value).ToString();if(lnode.Name.ToString()=="教室")mm=(lnode.Value).ToString();break;}nn=ss+""+ll+""+mm;MessageBox.Show(nn);this.textBox7.Text=nn;我想要获取节点:<时段值="12">的属性值,然后在用:if(subNode.Name=="时段"||subNode.Attributes["12"].ToString()=="12")来做判断,但我知道subNode.Attributes["12"].ToString()=="12"是错误的,想了很多都没成功,希能得到大家的指教。
解决方案
解决方案二:
up
解决方案三:
subNode.Attributes["值"].ToString()=="12"
解决方案四:
------------------------------------------------------------------------读例程------------------------------------------------------------------------XML文件<!--samplexmlfile--><bookstore><bookgenre='novel'ISBN='10-861003-324'><title>TheHandmaid'sTale</title><price>19.95</price></book><bookgenre='novel'ISBN='1-861001-57-5'><title>PrideAndPrejudice</title><price>24.95</price></book></bookstore>取每个书节点上的ISBN属性using(XmlReaderreader=XmlReader.Create("books.xml")){reader.ReadToFollowing("book");do{Console.WriteLine("ISBN:{0}",reader.GetAttribute("ISBN"));}while(reader.ReadToNextSibling("book"));}跳到子节点using(XmlReaderreader=XmlReader.Create("2books.xml")){reader.MoveToContent();//bookstorereader.ReadToDescendant("book");//第一个bookreader.Skip();//Skipthefirstbook.//第二个book...}挖到子节点using(XmlReaderreader=XmlReader.Create("book3.xml")){reader.Read();reader.ReadStartElement("book");reader.ReadStartElement("title");Console.WriteLine("Thecontentofthetitleelement:{0}",reader.ReadString());reader.ReadEndElement();reader.ReadStartElement("price");Console.WriteLine("Thecontentofthepriceelement:{0}",reader.ReadString());reader.ReadEndElement();reader.ReadEndElement();}读到指定位置FileStreamfs=newFileStream("..\..\..\books.xml",FileMode.Open);XmlTextReadertr=newXmlTextReader(fs);while(!tr.EOF){//查找类型为XmlNodeType.Element和名称为title的节点if(tr.MoveToContent()==XmlNodeType.Element&&tr.Name=="title"){listBox1.Items.Add(tr.ReadElementString());}else{tr.Read();}}遍历元素属性stringfileName="..\..\..\books.xml";XmlTextReadertr=newXmlTextReader(fileName);while(tr.Read()){//checktoseeifit'saNodeTypeelementif(tr.NodeType==XmlNodeType.Element){//ifit'sanelement,thenlet'slookattheattributes.for(inti=0;i<tr.AttributeCount;i++){listBox1.Items.Add(tr.GetAttribute(i));}}
解决方案五:
UP
解决方案六:
foreach(XmlNodeeleNodeinroot.ChildNodes){if(eleNode.Name.ToString()=="星期一"){if(eleNode.childNodes[0].attributes[""]==12){}
解决方案七:
引用3楼hucailin的回复:
------------------------------------------------------------------------读例程------------------------------------------------------------------------XML文件<!--samplexmlfile--><bookstore><bookgenre='novel'ISBN='10-861003-324'><title>TheHandmaid'sTale</title><price>19.95</price></book><bookgenre='novel'ISBN='1-86…
同意,完全正确。
解决方案八:
用Xpath查找!
解决方案九:
哎!!还是行不通啊!!!帮我看看是不是我的代码有错啊??
解决方案十:
XmlDocumentdoc=newXmlDocument();doc.load(@"C:1.xml");XmlNodeListList=doc.DocumentElement.GetElementByTagName("星期一");if(list!=null&&list.count>0){stringname=list[0].Attributes["时段"].value.toString();}
解决方案十一:
subNode.Attributes["值"]返回的可不是字符型的啊!!即便用tostring()也是不行的,怎么呀才能让属性的值以字符串的方式显现呢??
解决方案十二:
大家帮我看看我这样没错吧?我先把所有的节点值用字符串连接起来,然后再在textBox7控件中显示。但是运行时却什么也没显示。stringss=null;stringll=null;stringmm=null;stringnn=null;foreach(XmlNodelnodeinsubNode.ChildNodes){if(lnode.Name=="科目")ss=(lnode.Value).ToString();if(lnode.Name.ToString()=="教师")ll=(lnode.Value).ToString();if(lnode.Name.ToString()=="教室")mm=(lnode.Value).ToString();break;}nn=ss+""+ll+""+mm;MessageBox.Show(nn);this.textBox7.Text=nn;
解决方案十三:
XmlDocumentx=newXmlDocument()是这样---XmlNodenode=x.SelectSingleNode("课程表/星期一/时段[@值='12']");还是这样-----x.SelectSingleNode("课程表星期一时段[@值='12']");
解决方案十四:
SelectSingleNode我没有用这个方法,所以不存在你说的那个