毕业设计选的题目。现在需要实现的是,根据传入的ID值,找到对应的line元素,并把该line元素下的所有子元素的值赋给一个对象。
下面贴上XML文件和DTD文件:line.xml(我已经省略了一些形式一样的line节点):
<?xml version="1.0" encoding="gb2312" standalone="no"?>
<!DOCTYPE main SYSTEM "line.dtd"><main><!--应用时,将非曲线线段的最后两个属性均取值为零-->
<!--若curvestart属性为零,表示从该段线路一开始即为曲线-->
<line id="1">
<isCurve>false</isCurve>
<length>71</length>
<ramp>3.0</ramp>
<curve>0</curve>
<curvestart>0</curvestart>
</line><line id="2">
<isCurve>true</isCurve>
<length>57</length>
<ramp>3.0</ramp>
<curve>800</curve>
<curvestart>0</curvestart>
</line><line id="3">
<isCurve>true</isCurve>
<length>24</length>
<ramp>8.1</ramp>
<curve>800</curve>
<curvestart>0</curvestart>
</line></main>line.dtd:
<?xml version="1.0" encoding="GB2312" ?><!ELEMENT isCurve (#PCDATA)>
<!ELEMENT length (#PCDATA)>
<!ELEMENT ramp (#PCDATA)>
<!ELEMENT curve (#PCDATA)>
<!ELEMENT curvestart (#PCDATA)>
<!ELEMENT line (isCurve,length,ramp,curve,curvestart)>
<!ATTLIST line id ID #REQUIRED>

解决方案 »

  1.   

    XmlDocument doc = new ...
    doc.Load(xmlfile);
    XmlNode node = doc.SelectSingleNode("//line[@id="+inputid+"]");
    //其余的可以通过操作node 实现,例如可以xml序列化,或者遍历node的childrennode 处理
      

  2.   

    我补充一下。我现在觉得困难的地方就是在创建了node节点之后的处理上。因为在.net里面,只提供了基于0的整数索引方式,而我要实现的是,将line元素下的子元素赋值给对象的对应属性。请问这个一一对应该如何实现?
      

  3.   

    XmlDocument  doc=new XmlDocument ();
    doc.Load("line.xml");
    XmlNode node = doc.SelectSingleNode("/line[@id='"+id+"']"); 
    class c=new class();
     foreach (XmlElement no in node.ChildNodes)
                {
                 c.isCurve=no["isCurve"].InnerText;  
    .....类似  
                }
      

  4.   

    请问3楼。我照你说的写了。编译通过,运行时出现“NullReferenceException”错误。调试了一下。问题出在
    c.isCurve = no["isCurve"].InnerText;
    这里。请问这里是不是有什么不对的?
      

  5.   

                XmlNode node = doc.SelectSingleNode("/main/line[@id='"+id+"']");//没仔细看
    class c=new class(); //是你的class对象。不是我写的...class
                foreach (XmlNode el in node.ChildNodes)
                {
               c.isCurve = el.InnerText;//这里应该是innertext就对了。            }
      

  6.   

    我再问一下。那按你第二次的代码,岂不是不能一一对应了?另外我还想问一下。innertext和value两个属性在节点类型为元素时,会有什么不一样的地方么