现在有一个这样的xml文件
<1>
  <4>
    <2>内容1</2>
  </4>
  <3>
    <2>内容2</2>
  </3>
<1>很显眼两个<2>元素表示的是不同的内容。现在我要分析xml文件把<2>的内容放到数据库中,这个时候肯定要区分开来的,因为以后还要还原的
请问,怎么做可以达到这个要求。声明:肯定不能把整个xml文件放到数据库中。

解决方案 »

  1.   

    很简单,你的每个二级节点就对应数据库的一条记录,三级节点则对应字段的值。
    参考msdn中关于Xml空间下的类。
      

  2.   

    谢谢  jiezhi()  的回答。可是现在有这样一个问题我给出的xml文件是很简单的而我现在因为业务的需求。。xml文件最深的地方到12级。所以,你说的方法已经很难的解决了不知道有什么更高效的解决方法呢???谢谢
      

  3.   

    使用xslt把上面的xml转换成另一种xml格式,使其能比较简单的处理,
    并且随着你的节点深度的增加格式不会变化,
    比如把你的原先xml中节点的深度和路径在新的节点中保存为一个属性值存起来。
    当使用时进行xsl转换还原成原来的xml文件。
    对于xslt文件的制定需要花一些时间了。
    样式转换参考,
    http://dotnet.aspx.cc/ShowList.aspx?id=11
      

  4.   

    如果你的xml文件的数据具有树形结构的关系的话,那也好办,也可以一条条记录添加到数据库中。
    但如果xml文件十分复杂,且没有多少规律的话,那还是存成blob到数据库吧
      

  5.   

    请教  syeerzy(快乐永远)   
    用2叉树的算法实现的过程。有例子吗???
      

  6.   

    使用 xpath 查询
    ms-help://MS.VSCC.2003/MS.MSDNQTR.2003FEB.2052/xmlsdk/htm/xpath_devguide_overview_86gn.htm
      

  7.   

    使用xslt把上面的xml转换成另一种xml格式,使其能比较简单的处理,
    并且随着你的节点深度的增加格式不会变化,
    比如把你的原先xml中节点的深度和路径在新的节点中保存为一个属性值存起来。
    当使用时进行xsl转换还原成原来的xml文件。
    对于xslt文件的制定需要花一些时间了。
    样式转换参考,
      

  8.   

    請看下面方法:
    public DataView GetData(string XmlPathNode)
    {
    //Get XML Date,return DataView
    try
    {
    XmlNodeList xnl = objXmlDoc.GetElementsByTagName(XmlPathNode);
    System.Text.StringBuilder strXml = new System.Text.StringBuilder();
    strXml.Append( "<?xml version='1.0' ?><root>" );
    for (int i=0; i<xnl.Count; i++)
    {
    strXml.Append( xnl[i].OuterXml );
    }
    strXml.Append( "</root>" );
    System.IO.StringReader read = new System.IO.StringReader( strXml.ToString() );
    ds.ReadXml(read);
    }
    catch
    {
    //
    }
    return ds.Tables[0].DefaultView;
    }以你的要求,參數傳字符“2”就可以了!
    最後返回一個XML格式的Table:
    XML為:
    <?xml version='1.0' ?>
    <root>
    <2>内容1</2>
    <2>内容2</2>
    </root>把這個Table寫入到數據庫就可以了!
      

  9.   

    TO:bgu(让生命无悔无憾---横渡)如果这样,你就没有办法还原了如果单纯的想的得到你这样的结果用xpath 很简单就可以得到了//2就可以得到所有的标签为<2>的元素你搞复杂了
    可能我说得不明白吧。
    就是说分析完这个xml文件以后,主要的是还要还原成原来一样的格式。而数据库中是不能存任何xml文件所以只能建立辅助表来表现一个元素的层次关系,最后还原出来。
    怎样有比较高效的方法了????还请大家指点
      

  10.   

    如果有可能,换用面向对象的数据库,它们可以直接按对象存取xml