看看这篇文章的结尾,用文本框添加这个问题!如何用特殊字符替换XML文档中的文本?
用这种方法我想打开一个文档,替换一些文本,然后让它独自一人。它的作品,这是值得骄傲的东西。 :d
public static void replaceInOpenXMLDocument(string pfad, string zuErsetzen, string neuerString)
{
using (WordprocessingDocument doc = WordprocessingDocument.Open(pfad, true))
{
var res = from bm in doc.MainDocumentPart.Document.Body.Descendants()
where bm.InnerText != string.Empty && bm.InnerText.Contains(zuErsetzen) && bm.HasChildren == false
select bm;
foreach (var item in res)
{
item.InsertAfterSelf(new Text(item.InnerText.Replace(zuErsetzen, neuerString)));
item.Remove();
}
doc.Close();
}
}
但它只能在更换无特殊字符。 例如:
OS将与视窗9000
[OS]会留下,因为它是被替换。
CASE 1:
在文档:
You use os for whatever purpose you've got.
replaceInOpenXMLDocument("C:\NSA\suspects.docx", "os", "Win 2000");
会导致这样的:
You use Win 2000 for whatever purpose you've got.
CASE 2:
有特殊字符...
You use [os] for whatever purpose you've got.
replaceInOpenXMLDocument("C:\NSA\suspects.docx", "[os]", "Win 2000");
...它只是不理我:
You use [os] for whatever purpose you've got.
我试了几个特殊字符()[] {}等,但他们永远不会被取代。
有什么我忘记了吗?或者它是无法用这种方法替换特殊字符? 如果是这样,我只需要一个简单的解决方法。
有没有人帮助我的绝望? :)
SOLUTION /加入1:
感谢Flowerking为!这是我现在使用的代码:
public static void replaceInOpenXMLDocument(string pfad, string zuErsetzen, string neuerString)
{
using (WordprocessingDocument doc = WordprocessingDocument.Open(pfad, true))
{
SimplifyMarkupSettings settings = new SimplifyMarkupSettings
{
NormalizeXml = true, // Merges Run's in a paragraph with similar formatting
};
MarkupSimplifier.SimplifyMarkup(doc, settings);
//zuErsetzen = new XElement("Name", zuErsetzen).Value;
var res = from bm in doc.MainDocumentPart.Document.Body.Descendants()
where bm.InnerText != string.Empty && bm.InnerText.Contains(zuErsetzen) && bm.HasChildren == false
select bm;
// bm.InnerText.Contains(zuErsetzen)
foreach (var item in res)
{
item.InsertAfterSelf(new Text(item.InnerText.Replace(zuErsetzen, neuerString)));
item.Remove();
}
doc.Close();
}
}
(此代码将工作与在其正常的文字正常文档!)
SOLUTION /添加2: 如果你想要取代文本框中的文字,我不得不做一些小的解决方法。 文本框被声明为图片,所以上面的代码不会触及它。
我发现了一个额外的类(link),它甚至可以通过文本框搜索。 ZIP下载包括一个exmaple程序,易于理解。
你的榜样输入/输出是不太清楚。请更具体地说明其当前正确/不正确的行为以及您希望不正确的行为。 – tnw
对问题没有清楚的认识! – Irfan
对不起!让我只是编辑这个给你... – Trollwut