将以下Linq转换为xml到.net 2.0

时间:2011-11-19 10:09:04

标签: c# xml

我最近正在研究.net 2.0项目我必须阅读一些xml文件并替换某些元素值。 想知道你怎么做以下不使用linq到xml?

 IEnumerable<XElement> cities= xmldoc.Descendants("City")
            .Where(x => x.Value == "London");


        foreach (XElement myElem in cities)
        {
            myElem.ReplaceWith(new XElement("City", "NewCity"));
        }

       var xElement = xdoc.Descendants("FirstName").Where(x => x.Value == "Max").First();
        xElement.ReplaceWith(new XElement("FirstName", "NewValue");

任何建议

2 个答案:

答案 0 :(得分:1)

您需要使用XmlDocument并使用XPath SelectNodes进行查询。

它不会那么好和娴熟。

答案 1 :(得分:1)

您可以考虑使用XmlDocument,如下所示:

string xmlFile = "<xml><data<test /><test /><test /><test /></data></xml>";
var xmlDoc = new XmlDocument();
xmlDoc.Load(xmlFile);

var oNodes = xmlDoc.SelectNodes("//test");
foreach (var oNode in oNodes)
{
   oNode.InnerText = "bla bla"; 
}

xmlDoc.Save("..path to xml file");

(在您的情况下,您可以使用文档的InnerXml属性)

http://msdn.microsoft.com/en-us/library/system.xml.xmldocument.aspx

要选择节点,您应该传递XPath查询,可以找到引用:

http://www.w3schools.com/xpath/

此外,如果XML包含名称空间,则需要使用XmlNamespaceManager:

http://msdn.microsoft.com/en-us/library/system.xml.xmlnamespacemanager.aspx

否则xpath将无效。