C# Xaml中的XPath选择节点
我想匹配xaml文件中的一个节点,我的文件如下所示: 一些Xaml(类似xml)输入: 试试这个C# Xaml中的XPath选择节点,c#,xml,xaml,xpath,C#,Xml,Xaml,Xpath,我想匹配xaml文件中的一个节点,我的文件如下所示: 一些Xaml(类似xml)输入: 试试这个 //Load xml in XElement string xml="xml"; XElement xmlTree=XElement.Parse(xml); //Get required element XElement child = xmlTree.Element("SomeNode.AnyProperty"); //replace it with requried element child.
//Load xml in XElement
string xml="xml";
XElement xmlTree=XElement.Parse(xml);
//Get required element
XElement child = xmlTree.Element("SomeNode.AnyProperty");
//replace it with requried element
child.ReplaceWith(
new XElement("NewChild", "new content")
);
有关更多详细信息,请参阅以下链接
这个问题特别询问XPath。使用
XElement
istead ofXmlDocument
然后XmlDocument的方法。SelectNode(XPath XPath)
实际解决了我的问题。我不得不使用变通方法来避免名称空间问题,但它最终完成了它的工作!我将为上面的问题添加解决方案。它对我有效。您究竟是如何使用该XPath的?我尝试在XmlDocument.SelectNode(XPath XPath)
中使用它。我认为问题不在于XPath本身,而且我的xaml的名称空间声明是个邪恶的家伙。
XDocument doc = XDocument.Load("someFile.xaml");
//Get required element
XElement nodeToReplace = doc.Elements().Where(x => x.Name.LocalName == "SomeNode.AnyProperty").FirstOrDefault() as XElement;
//replace it with requried element
nodeToReplace.ReplaceWith(someOtherNodeIGeneratedEarlier);
doc.Save("someFile_editet.xaml");
//Load xml in XElement
string xml="xml";
XElement xmlTree=XElement.Parse(xml);
//Get required element
XElement child = xmlTree.Element("SomeNode.AnyProperty");
//replace it with requried element
child.ReplaceWith(
new XElement("NewChild", "new content")
);