Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 替换XML中的混合内容(纯文本标记)_C#_Xml - Fatal编程技术网

C# 替换XML中的混合内容(纯文本标记)

C# 替换XML中的混合内容(纯文本标记),c#,xml,C#,Xml,该程序采用html和自定义标记混合的xml。我要替换此自定义标记: <replaceable /> 为此: Some text <div>Other text</div> 一些文本 其他文本 主要问题是,我可以用来正确处理XML的任何框架或库(如LinqToXML或System.XML)都无法获得全部内容。如果你想这样做: // replaceable is an XElement for <replaceable /> // conte

该程序采用html和自定义标记混合的xml。我要替换此自定义标记:

<replaceable />

为此:

Some text
<div>Other text</div>
一些文本
其他文本
主要问题是,我可以用来正确处理XML的任何框架或库(如LinqToXML或System.XML)都无法获得全部内容。如果你想这样做:

// replaceable is an XElement for <replaceable />
// content is a string
replaceable.ReplaceWith(content)
//可替换是
//内容是一个字符串
可替换。替换为(内容)
它以转义文本结束,并作为XElement的值

如果我尝试XElement.Parse()方法,就像这里的其他问题所建议的那样,我会丢失开头的纯文本,只剩下


有没有一种方法可以在不使用所有正则表达式的情况下进行此类替换?

您需要在解析内容之前将其包装在标记中,以便
XElement.parse()
可以为您提供所有节点

var outer = XElement.Parse("<dummy>" + content + "</dummy>");
replaceable.ReplaceWith(outer.Nodes());
var outer=XElement.Parse(“+content+”);
replacement.ReplaceWith(outer.Nodes());

使用字符串将元素替换为文本节点。首先要创建一个新的
XElement
,并将其用于替换

replaceable.ReplaceWith(new XElement("div", otherText));

实际上我正在包装它。但这让我意识到我愚蠢的错误。我使用的是outer.Elements()而不是Nodes()。谢谢,那很快很容易