当前位置:编程学习 > C#/ASP.NET >>

贵求读xml文档 属性

<Item Id="1" Name="连续障碍">
    <Define Id="1" Name="起步线"    Signal="$00000001" Reverse="0" />
    <Define Id="2" Name="结束线"    Signal="$00000002" Reverse="0" />
    <Define Id="3" Name="1饼线圈"   Signal="$00000004" Reverse="0" />
    <Define Id="4" Name="2饼线圈"   Signal="$00000008" Reverse="0" />
    <Define Id="5" Name="3饼线圈"   Signal="$00000010" Reverse="0" />
    <Define Id="6" Name="4饼线圈"   Signal="$00000020" Reverse="0" />
    <Define Id="7" Name="5饼线圈"   Signal="$00000040" Reverse="0" />
    <Define Id="8" Name="6饼线圈"   Signal="$00000080" Reverse="0" />
    <Define Id="9" Name="1饼擦"     Signal="$00000100" Reverse="0" />
    <Define Id="10" Name="2饼擦"    Signal="$00000200" Reverse="0" />
    <Define Id="11" Name="3饼擦"    Signal="$00000400" Reverse="0" />
    <Define Id="12" Name="4饼擦"    Signal="$00000800" Reverse="0" />
    <Define Id="13" Name="5饼擦"    Signal="$00001000" Reverse="0" />
    <Define Id="14" Name="6饼擦"    Signal="$00002000" Reverse="0" />
    <Define Id="15" Name="1饼压"    Signal="$00004000" Reverse="0" />
    <Define Id="16" Name="2饼压"    Signal="$00008000" Reverse="0" />
    <Define Id="17" Name="3饼压"    Signal="$00010000" Reverse="0" />
    <Define Id="18" Name="4饼压"    Signal="$00020000" Reverse="0" />
    <Define Id="19" Name="5饼压"    Signal="$00040000" Reverse="0" />
    <Define Id="20" Name="6饼压"    Signal="$00080000" Reverse="0" />
    <Define Id="21" Name="路边线1"  Signal="$00100000" Reverse="0" />
    <Define Id="22" Name="路边线2"  Signal="$00200000" Reverse="0" />  
  </Item>
  <Item  Id="2" Name="单边桥" >
    <Define   Id="1"  Name="起步线"  Signal="$00000001" Reverse="0" />
    <Define   Id="2"  Name="结束线"  Signal="$00000002" Reverse="0" />
    <Define   Id="3"  Name="1桥1线"  Signal="$00000004" Reverse="0" />
    <Define   Id="4"  Name="1桥2线"  Signal="$00000008" Reverse="0" />
    <Define   Id="5"  Name="1桥3线"  Signal="$00000010" Reverse="0" />
    <Define   Id="6"  Name="1桥4线"  Signal="$00000020" Reverse="0" />
    <Define   Id="7"  Name="2桥1线"  Signal="$00000040" Reverse="0" />
    <Define   Id="8"  Name="2桥2线"  Signal="$00000080" Reverse="0" />
    <Define   Id="9"  Name="2桥3线"  Signal="$00000100" Reverse="0" />
    <Define   Id="10" Name="2桥4线"  Signal="$00000200" Reverse="0" />
  </Item>  

读取xml 的属性   --------------------编程问答-------------------- 没人知道吗 怎么去到<Define Id="7" Name="5饼线圈" Signal="$00000040" Reverse="0" />
总的  Signal="$00000040"  值 --------------------编程问答-------------------- 取xml的节点啊,Id是唯一的,你取Id为7的节点,再获取这个节点里面的值就可以啦 --------------------编程问答-------------------- 看到过忘了   希望有人告知 --------------------编程问答--------------------

 xmlDoc.Load(@"config\Draft.XML");//加载XML文件
                XmlNodeList pPacketInfoList = xmlDoc.GetElementsByTagName("PInfo");//读取所有LoanInfo元素
                foreach (XmlNode pXmlPacket in pPacketInfoList)
                {
                    if (pXmlPacket.Attributes["UserId"].Value.ToString() == App.UserId)
                    {
                        DataRow dr = pdtPacket.NewRow();
                        dr["PacketNo"] = pXmlPacket.Attributes["PacketNo"].Value.ToString();
                    }
                }

试着写写呗 --------------------编程问答-------------------- 第一 XML不符合规范
XML除声明外只能有一个根节点

获取属性
XmlElement.GetAttribute --------------------编程问答-------------------- 现在没环境,晚上测试
LINQ TO XML操作如http://topic.csdn.net/u/20110117/14/477e0919-eca7-4265-aee9-205f9a8f21e4.html --------------------编程问答-------------------- 我是觉得蛮规范了,方法都一样的,都有规律可寻 --------------------编程问答-------------------- 用Xpath语句
调用getstring(nl,"./Item[@Id='1']/Define[@Id='7']");
结果为<Define Id="7" Name="5饼线圈" Signal="$00000040" Reverse="0" />
下Signal的值;
getstring代码如下

        public string getstring(XmlNode nl, string Xpath)
        {

            XmlNode sd = nl.SelectSingleNode(Xpath);
            return sd.Attributes["Signal"].Value.Trim();

        }

具体的Xpath语句可以去百度查查。 --------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答-------------------- 真要把代码一个一个给你写出来? --------------------编程问答--------------------

xmlDoc.Load(@"config\Draft.XML");//加载XML文件
                XmlNodeList pPacketInfoList = xmlDoc.GetElementsByTagName("Define");//读取所有LoanInfo元素
                foreach (XmlNode pXmlPacket in pPacketInfoList)
                {
                    if (pXmlPacket.Attributes["Id"].Value.ToString() == '7')
                    {
                        DataRow dr = pdtPacket.NewRow();
                        dr["Name"] = pXmlPacket.Attributes["Name"].Value.ToString();
                    }
                }

这样不就出来了,你把pdtPacket这个DataTable替换成你自己写的,一个一个取出来就可以了 --------------------编程问答--------------------
引用 12 楼 airch 的回复:
C# code

xmlDoc.Load(@"config\Draft.XML");//加载XML文件
                XmlNodeList pPacketInfoList = xmlDoc.GetElementsByTagName("Define");//读取所有LoanInfo元素
                foreach (XmlNode pXmlPacket……

晕 不小心把双引号打成单引号了 --------------------编程问答-------------------- LZ你说你想取什么值撒,说了我看看能不能写给你

猜测如下

 XmlNodeList xmlNodeList = doc.SelectNodes("//Items/Item[@ColumnName='" + column + "']/Define [@Id='1']");
                foreach (XmlNode xdcolName in xmlNodeList)
                 xdcolName.Attributes["Name"].Value));

--------------------编程问答-------------------- System.Xml.XmlDocument doc = new System.Xml.XmlDocument();
doc.Load(Server.MapPath("你的xml文件路径"));  
foreach (XmlNode tmpNode in doc.SelectSingleNode("GN").ChildNodes)
  {
   string id =   tmpNode.Attributes["Id"].Value;
   string name = tmpNode.Attributes["Name"].Value;
   string sig =  tmpNode.Attributes["Signal"].Value;    
   string rev = tmpNode.Attributes["Reverse"].Value;
Response.Write(id + name + sig +rev);
  }
补充:.NET技术 ,  C#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,