C# 将“运行文本”属性移动到元素的内容
如何将Run的Text属性移动到Run标记的内容。e、 gC# 将“运行文本”属性移动到元素的内容,c#,xml,silverlight,richtextbox,linq-to-xml,C#,Xml,Silverlight,Richtextbox,Linq To Xml,如何将Run的Text属性移动到Run标记的内容。e、 g string str = "<Run Text='hello world' />"; //into string str2 = "<Run>hello world</Run>"; string str=”“; //进入 string str2=“hello world”; 请记住,字符串可以包含多个段落和多个运行(我希望所有运行都被更改)。理想情况下,我希望将其保留为字符串,而不是转换为XML
string str = "<Run Text='hello world' />";
//into
string str2 = "<Run>hello world</Run>";
string str=”“;
//进入
string str2=“hello world”;
请记住,字符串可以包含多个段落和多个运行(我希望所有运行都被更改)。理想情况下,我希望将其保留为字符串,而不是转换为XML或XAML,因此可能需要一个Regex语句?。如果没有,我将接受转换
任何帮助都将不胜感激。string str=“”;
XElement elem = XElement.Parse(str);
string str2 = new XElement(elem.Name, elem.Attribute("Text").Value).ToString();
XmlDocument doc=新的XmlDocument();
doc.LoadXml(str);
XmlNodeList节点=doc.SelectNodes(“根/运行”);
foreach(节点中的XmlNode节点)
{
xmldattribute attr=node.Attributes[“Text”];
node.InnerText=attr.Value.ToString();
node.Attributes.Remove(attr);
}
str=doc.InnerXml;
从@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();
string str=”“;
XElement elem=XElement.Parse(str);
变量运行=元素后代和自身(“运行”);
foreach(var磨合运行)
{
//就地修改以保留(未知)结构。
run.Value=run.Attribute(“Text”).Value;
属性(“文本”).Remove();
}
str=elem.ToString();
不错的开始,但您必须在所有运行中进行迭代/递归。@Henk是的,实际上这只是一个想法,似乎无法使子代和自身(“运行”)正常工作。如果没有“运行”,它可以工作(运行和段落的混合),但没有返回任何内容…只是测试了一下,工作正常。在问题中列出更多的测试用例。
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();