Я хотел бы сопоставить узел внутри xaml файла, и мой файл выглядит так:
<SomeNode> <!-- this is root btw -->
<!-- [...] -->
<SomeNode.AnyProperty>
<!-- [...] -->
</SomeNode.AnyProperty>
<!-- [...] -->
</SomeNode>
и я хочу математику только в разделе " SomeNode.AnyProperty
". Впоследствии я хочу заменить найденный узел на сгенерированный.
Любые предложения для рабочего выражения XPath
? Я пробовал общее выражение, подобное тем, которые я бы применил в обычном xml файле, например: "SomeNode.AnyProperty". Но наверняка это не сработало.
Спасибо за поддержку. Проблема заключалась не в выражении XPath
itselft. Кроме того, это было объявление пространства имен моего входного файла xaml. Чтобы избежать этих проблем с пространством имен, я использовал модифицированную версию решения @malkam.
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")
);
См. Ниже ссылки для более подробной информации.
http://msdn.microsoft.com/en-us/library/system.xml.linq.xelement_methods%28v=vs.110%29.aspx
XElement
вместоXmlDocument
а затемXmlDocument.SelectNode(XPath xpath)
решил мою проблему. Мне пришлось использовать обходной путь, чтобы избежать проблем с пространством имен, но в конце концов он делает свою работу! Я добавлю решение вопроса выше.