我已经在单词中打开了轨道更改(修订)选项并进行了一些更改,发现所有轨道更改都在openxml内容中被跟踪和找到。但我没有在openxml内容中看到已删除的listnum值,并且listnum值将从下一段继续。那么如何在openXml中跟踪/获取已删除的listnum值。
关于这个问题的更多细节 - 我们有5个段落,其中包含listnums(a)到(e)。我打开了轨道更改并删除了listnum值(b),以便第二段现在没有listnum。我以为我可以在openxml中得到值(b),因为我打开了轨道更改,但我无法从openxml中获取已删除的值(b)。
谢谢, 马努
答案 0 :(得分:1)
单个子弹点可能使用以下xml。它是一个包含Run中文本'Item1'的Paragraph。 ParagraphProperties应用样式'ListParagraph'并引用编号:
<w:p>
<w:pPr>
<w:pStyle w:val="ListParagraph" />
<w:numPr>
<w:ilvl w:val="0" />
<w:numId w:val="1" />
</w:numPr>
</w:pPr>
<w:r>
<w:t>Item1</w:t>
</w:r>
</w:p>
如果启用了“跟踪更改”并且我删除了“Item1”文本,则会获得如下所示的xml:
<w:p>
<w:pPr>
<w:pStyle w:val="ListParagraph" />
<w:pPrChange w:author="Daniel Brixen" w:date="2017-02-16T09:37:00Z" w:id="0">
<w:pPr>
<w:pStyle w:val="ListParagraph" />
<w:numPr>
<w:numId w:val="1" />
</w:numPr>
<w:ind w:hanging="360" />
</w:pPr>
</w:pPrChange>
</w:pPr>
<w:del w:author="Daniel Brixen" w:date="2017-02-16T09:37:00Z" w:id="2">
<w:r>
<w:delText>Item2</w:delText>
</w:r>
</w:del>
</w:p>
有两点需要注意:
因此,您应该可以使用以下内容找到已删除的文本:
using (var doc = WordprocessingDocument.Open(@"c:\temp\test.docx", true))
{
var deletedText = doc.MainDocumentPart.Document.Body.Descendants<DeletedText>();
Console.WriteLine(String.Join(" ", deletedText.Select(t => t.Text)));
}
在调试此类内容时,使用Open XML Productivity Tool会很有帮助。