无法获取xml元素的属性名称

时间:2014-01-22 18:50:09

标签: c# xml xml-parsing

你好我得到了这个xml文件

Tanya Milenova Marinova  普罗夫迪夫4000,bul。瓦西里·朱诺夫115 0899803698       

所以我尝试逐行读取xml文件并在标签中获取元素名称或属性名称 - 以及文本框中的元素值或属性值(以便用户可以进行更改)

  int i = 0;

            XmlTextReader rdr = new XmlTextReader("E:/Tanya Documents/Stanga1Projects/XML_project_Tanya_Marinova/cv.xml");
            while (rdr.Read())
            {
                if (rdr.NodeType == XmlNodeType.Element)
                {
                    Label nodeName = new Label();
                    nodeName.Text = rdr.LocalName+":  ";
                    Page.FindControl("form1").Controls.Add(nodeName);

                     if (i != 1)
                     {
                         XmlReader pReader = rdr.ReadSubtree();
                         while (pReader.Read())
                         {
                             if (pReader.NodeType == XmlNodeType.Text)
                             {
                                 TextBox txtBox = new TextBox();
                                 txtBox.Text = rdr.Value;
                                 Page.FindControl("form1").Controls.Add(txtBox);

                             }
                             if (pReader.NodeType == XmlNodeType.Element)
                             {
                                 for (int t = 0; t < rdr.AttributeCount; t++)
                                 {
                                     /* ...Here I want a label with attribute name not value)*/
                                     TextBox txbAttribute = new TextBox();
                                     txbAttribute.Text = rdr.GetAttribute(t);
                                     Page.FindControl("form1").Controls.Add(txbAttribute);

                                 }
                             }
                         }
                     }

                    Page.FindControl("form1").Controls.Add(new LiteralControl("<br />"));



                }
                i++;
}

一切正常但是当我进入'education'元素 - 其中有childNodes - 带有属性的元素 - 我只能通过'getAttributes'方法得到属性值,但我无法得到他们的名字

非常感谢

1 个答案:

答案 0 :(得分:1)

你能沿着这些方向尝试一下吗?通过MSDN

中的示例进行轻微修改以适合您的实施
        if (pReader.NodeType == XmlNodeType.Element)
        {
            if (pReader.HasAttributes)
            {
                while (pReader.MoveToNextAttribute())
                {
                    /* ...Here I want a label with attribute name not value)*/
                    Label lblAttribute = new Label();
                    lblAttribute.Text = pReader.Name;
                    TextBox txbAttribute = new TextBox();
                    txbAttribute.Text = pReader.Value;
                    Page.FindControl("form1").Controls.Add(txbAttribute);
                }   

                // Move the reader back to the element node.
                reader.MoveToElement();
            }
        }