如何将Run的Text属性移动到Run标记的内容。 e.g。
string str = "<Run Text='hello world' />";
//into
string str2 = "<Run>hello world</Run>";
请记住,字符串可能包含多个段落和多个运行(我希望所有运行都被更改)。理想情况下,我想将它保留为字符串而不是转换为XML或XAML,所以可能是一个正则表达式声明?如果没有,那么我会接受转换它。
非常感谢任何帮助。
答案 0 :(得分:2)
借用@ionden:
string str = "<Para> <Run Text='hello world' /> <Run Text='goodbye world' /></Para>";
XElement elem = XElement.Parse(str);
var runs = elem.DescendantsAndSelf("Run");
foreach (var run in runs)
{
// modify in-place to preserve the (unknown) structure.
run.Value = run.Attribute("Text").Value;
run.Attribute("Text").Remove();
}
str = elem.ToString();
答案 1 :(得分:1)
XElement elem = XElement.Parse(str);
string str2 = new XElement(elem.Name, elem.Attribute("Text").Value).ToString();
答案 2 :(得分:0)
string str = "<Root><Run Text='hello world' /><Run Text='hello world2' /></Root>";
XmlDocument doc = new XmlDocument();
doc.LoadXml(str);
XmlNodeList nodes = doc.SelectNodes("Root/Run");
foreach (XmlNode node in nodes)
{
XmlAttribute attr = node.Attributes["Text"];
node.InnerText = attr.Value.ToString();
node.Attributes.Remove(attr);
}
str = doc.InnerXml;