XM文件如下
  <And>
    <And>
      <Or>
        <IsNotNull>
          <FieldRef Name="标题" />
          <Value></Value>
        </IsNotNull>
        <Neq>
          <FieldRef Name="标题" />
          <Value>Test2</Value>
        </Neq>
      </Or>
      <Eq>
        <FieldRef Name="标题" />
        <Value>Test3</Value>
      </Eq>
    </And>
    <Eq>
      <FieldRef Name="路京" />
      <Value>1</Value>
    </Eq>
  </And>要得到 ((IsNotNull 标题)Or(标题 Neq Test2) or 标题 Eq Test3)and(路京 Eq1);就是 先得到最底下的一层层向上找 找个应该是回溯吧
不知道我 表达的清除么?

解决方案 »

  1.   

    用不着吧
    用XMLTextReader直接读就行了
      

  2.   

    用一个递归来生成:    StringBuilder sb = new StringBuilder();
        
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                XmlDocument xd = new XmlDocument();
                xd.Load(Server.MapPath("XMLFile.xml"));
                output(xd.DocumentElement);
                sb.Append(";");
                Response.Write(sb.ToString());
                
            }
        }    protected void output(XmlNode n)
        {
            if (n.Name == "And")
            {
                sb.Append("(");
                output(n.ChildNodes[0]);
                sb.Append("and");
                output(n.ChildNodes[1]);
                sb.Append(")");
            }
            else if (n.Name == "Or")
            {
                sb.Append("(");
                output(n.ChildNodes[0]);
                sb.Append("or");
                output(n.ChildNodes[1]);
                sb.Append(")");
            }
            else 
            {
                sb.Append("(");
                sb.Append(n.ChildNodes[0].Attributes["Name"].Value);
                sb.Append(" ");
                sb.Append(n.Name);
                sb.Append(" ");
                sb.Append(n.ChildNodes[1].InnerText);
                sb.Append(")");
            }
        }
      

  3.   

    lz可以试试我写的这个代码,把你的xml按原样放到XMLFile.xml中就可以了~