[英]Find and replace in XAML programatically
我試圖以編程方式解析/搜索XAML文件中的某個節點,然后通過某個屬性對其進行修改。 XAML是Windows工作流,因此它不是真正的用戶控件。 我發現了許多使用XamlReader解析Xaml文件以查找控件然后修改控件的示例。 但是在我的情況下,我正在尋找不是DependencyObjects的自定義活動。 我可以使用XamlReader在Windows工作流Xaml中查找自定義活動並修改某些屬性嗎? 還是有更好的解決方案?
您不需要使用XamlReader,使用XmlDocument並遍歷元素和屬性。
這是我們要做的,只需編寫“ DoYourStringReplace”方法:
private void ParseXml(
TextWriter resultStream,
TextReader sourceStream)
{
XmlDocument doc = new XmlDocument();
doc.PreserveWhitespace = true;
doc.Load(sourceStream);
ParseXmlNodes(doc.DocumentElement);
using (XmlWriter xw = XmlWriter.Create(resultStream))
{
doc.WriteTo(xw);
}
}
/// <summary>
/// Parse a single XML node and its children.
/// </summary>
/// <param name="node"></param>
private void ParseXmlNodes(XmlNode node)
{
if (node.NodeType == XmlNodeType.Element)
{
//
// Replace tokens in XML attribute values
//
foreach (XmlAttribute a in node.Attributes)
{
a.Value = DoYourStringReplace(a.Value);
}
}
else if (node.NodeType == XmlNodeType.Text)
{
//
// Replace tokens in the XML Element value
//
node.Value = DoYourStringReplace(node.Value);
}
//
// Do the same thing for all children
//
foreach (XmlNode child in node.ChildNodes)
{
ParseXmlNodes(child);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.