/// <summary>
/// 根据节点文本读取节点的名字
/// </summary>
/// <param name="filePath">XML文件的路径</param>
/// <param name="nodeXpath">所读节点的的Xpath</param>
/// <param name="text">所读节点的的文本</param>
public string  ReadxmlOneNodeName(string filePath,string nodeXpath,string text)
{

XmlDataDocument document=new XmlDataDocument();
document.Load(filePath);
document.DataSet.EnforceConstraints=false;

XmlNode starnode= document.SelectSingleNode(nodeXpath);

XmlNodeList xnl=starnode.ChildNodes;
string contents ="";
for(int i=0;i<xnl.Count;i++)
{
if(starnode.ChildNodes[i].InnerText==text)
{
contents= starnode.ChildNodes[i].Name;

}
}
return contents;
}

解决方案 »

  1.   

    我有做了一个读取XML的类,正好少了你说的那个方法,我现在写,一会给你
      

  2.   

    /// 读取一个节点的属性
    /// <summary>
    /// <param name="filePath">读取XML文件的路径</param>
    /// <param name="addNodePath">读取节点的位置</param>
    /// <param name="attributeName">读取属性的名称</param>
    /// <param name="attributeValue">读取属性的值</param>
    /// </summary>
    public void ReadOneAtt(string filePath,string addNodePath,string elementName,string elementValue,string attributeName,string attributeValue)
    {
    XmlDataDocument document=new XmlDataDocument();
    document.Load(filePath);
    document.DataSet.EnforceConstraints=false;

    //查找读取节点
    XmlNode starnode= document.SelectSingleNode(nodeXpath);

    //读取属性到指定位置
    XmlAttribute newattr=document.CreateAttribute(attributeName);

    newattr.Value =attributeValue;
    starnode.Attributes.Append(newattr);
    //保存修改后的XML文件

    mydoc.Save(filePath);
    }
      

  3.   

    能不能把你 xurui1016(小蕊) 那个类发给我,谢谢,[email protected]
      

  4.   

    问题解决了,对了问一下 xurui1016(小蕊),怎么判断又没有这个“ctrl”属性
      

  5.   

    先取出所有属性保存到一个动态数组中,然后用动态数组的Contains方法就可以判断一个属性是否存在
      

  6.   

    给一个方法你参考~~private string[] ReadallField()
    {     
    string nodePath="/Source/AllDroit";
    string[] stremp=xmlcls.ReadxmlOneNodeData (fielpath,nodePath);

    ArrayList strAll=new ArrayList();
    strAll.AddRange(stremp);
    string[] strDis=ReaddisField();

    for(int i=0;i<strDis.Length;i++)
    {
    if(strAll.Contains(strDis[i]))
    strAll.Remove(strDis[i]);
    }
    string[] str=new string[strAll.Count];
    strAll.CopyTo(0,str,0,strAll.Count); return str;
    }
    private string[] ReaddisField()
    {
    string namePath="/Source/DroitGroup";
    string group=xmlcls.ReadxmlOneNodeName(fielpath,namePath,this.Usergroupcmb.SelectedItem.ToString());

    string nodePath="/Source/"+group; string[] str=xmlcls.ReadxmlOneNodeData(fielpath,nodePath); return str;

    }