我最近正在研究.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");
任何建议
答案 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将无效。