后台:我有一个包含标签字符的.docx文件。我想阅读每个段落并替换一个空格。我需要空格作为分隔符,所以我可以解析日期,名称等等。
问题:使用paragraph.InnerText并不会返回标签字符 是一个单独的xml元素。如果我手动替换空格,我的解析例程工作正常。但是,使用paragraph.InnerText时,返回的文本全部被删除。
我无法使用run.InnerText获取标签字符。我搜索了一些例子,但没有找到解决问题的方法。
using (WordprocessingDocument wordDocument = WordprocessingDocument.Open(filePath, false))
{
Body body = wordDocument.MainDocumentPart.Document.Body;
foreach (var para in body.Elements<Paragraph>())
{
s = para.InnerText.ToString(); // Tab chars are stripped
Console.WriteLine("Run: " + s);
}
}
using (WordprocessingDocument wordDocument = WordprocessingDocument.Open(filePath, false))
{
Body body = wordDocument.MainDocumentPart.Document.Body;
foreach (var para in body.Elements<Paragraph>())
{
s = ""; // Work string to build full line
foreach (var run in para.Elements<Run>())
{
// If (This is a tab char)
// {
// s = s + " "; // Yes - Substitute a space
// }
// else // No - This assumes there are no other xml tags like "Proof Error"
// {
// s = s + run.InnerText.ToString();
// }
}
Console.WriteLine("Run: " + s);
}
解决:我能够找到标签字符和替换空格。闭。
答案 0 :(得分:0)
我正在使用run元素的.LocalName属性。我可以测试“tab”。
foreach (var e in run.Elements())
{
if (e.LocalName == "tab")
{
Console.WriteLine(" Element Tab: " + e.InnerText.ToString());
s = s + " ";
}
else if (e.LocalName == "t")
{
Console.WriteLine(" Element Text: " + e.InnerText.ToString());
s = s + e.InnerText.ToString();
}
else
{
Console.WriteLine("Drop Through RUN set: " + e.LocalName);
}
}