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);就是 先得到最底下的一层层向上找 找个应该是回溯吧
不知道我 表达的清除么?
<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);就是 先得到最底下的一层层向上找 找个应该是回溯吧
不知道我 表达的清除么?
用XMLTextReader直接读就行了
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(")");
}
}