看看這篇文章的結尾,用文本框添加這個問題!如何用特殊字符替換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