代码之家  ›  专栏  ›  技术社区  ›  Thorin Oakenshield

如何在C中使用linqtoxml为XML元素设置属性#

  •  3
  • Thorin Oakenshield  · 技术社区  · 15 年前

    我有一个xml文件

        <Root>
           <Steps>
                <Step Test="SampleTestOne" Status="Fail" /> 
                <Step Test="SampleTestTwo" Status="Fail" /> 
           </Steps>
        </Root>
    

    现在我使用XmlDocument来实现这个

            XmlDocument XDoc = new XmlDocument();
            XDoc.Load(Application.StartupPath + "\\Sample.xml");
            XmlNodeList NodeList = XDoc.SelectNodes("//Steps/Step");
            foreach (XmlNode Node in NodeList)
            {
                XmlElement Elem = (XmlElement)Node;
                String sTemp = Elem.GetAttribute("Test");
                if (sTemp == "SampleTestOne")
                    Elem.SetAttribute("Status", "Pass");
    
            }
    

    我需要搜索元素并更新状态

    使用XDocumentin c有什么方法可以做到这一点吗#

    提前谢谢

    2 回复  |  直到 15 年前
        1
  •  4
  •   Anthony Pegram    15 年前
    string filename = @"C:\Temp\demo.xml";
    XDocument document = XDocument.Load(filename);
    
    var stepOnes = document.Descendants("Step").Where(e => e.Attribute("Test").Value == "SampleTestOne");
    foreach (XElement element in stepOnes)
    {
        if (element.Attribute("Status") != null)
            element.Attribute("Status").Value = "Pass";
        else
            element.Add(new XAttribute("Status", "Pass"));
    }
    
    document.Save(filename); 
    
        2
  •  2
  •   SageNS    15 年前

    您可以使用以下代码:

    XmlDocument xmlDoc = new XmlDocument();
    xmlDoc.Load(xmlFile);
    XmlNode node = xmlDoc.SelectSingleNode("Root/Steps/Step");
    node.Attributes["Status"].Value = "True";
    xmlDoc.Save(xmlFile);