我使用Open XML SDK 2.5来读取控制台应用程序中的.docx
文件。
在使用Open XML SDK打开Word时,Word显示文档的方式与文档在XML中的表示方式之间似乎存在一些差异。
以下是我在Word中看到的可见空格的示例:
因此,在我的应用程序中,我将此段落作为DocumentFormat.OpenXml.Wordprocessing.Paragraph
对象引用。在浏览Open XML文档之后,我清楚地知道没有表示" line"以XML格式。所以我能做的最好的就是拥有Paragraph
,与行最接近的是Run
对象。在此示例中,Paragraph
节点具有6个Run
对象的集合。如果我在此示例中获得InnerXml
的{{1}}属性,则其外观如下:
Paragraph
我看到的只是段落属性节点和6个运行节点。正如您所看到的,运行节点并不等同于线路。从Word中查看我的示例,我看到段落有2个回车符,我希望这个由3"行"表示。但是在XML中,我得到了6次运行,这些运行似乎与3行非常接近,但由于某些原因,某些行似乎是任意分割的。
真正的问题是我没有看到任何解释运行节点的方式,我可以重建我在Word中的示例中的线结构。例如,没有任何东西向我表明运行1,2和3一起构成第1行。
我需要解析超过300个单词文档,这些文档依赖于格式化的换行符。我需要换行,我怎么能得到它们?这是否可以使用Open XML SDK?
提前致谢。
答案 0 :(得分:1)
您在XML中寻找的元素是Break
元素<w:br />
。
从文档中,这个XML:
<w:r>
<w:t>This is</w:t>
<w:br/>
<w:t xml:space="preserve"> a simple sentence.</w:t>
</w:r>
会产生
这是
一个简单的句子。
我已经美化了你的XML并在这个答案的最后标记了Breaks
。
Runs
不用于确定行,而是用于包含具有相同属性的文本的逻辑块。例如,假设我有以下文字:
测试的荷兰国际集团强>
请注意ing
以粗体显示。在OpenXML中,这需要两次运行,一次用于test
,另一次用于ing
,因为它们具有不同的属性。 XML将是这样的:
<w:r>
<w:t>Test</w:t>
</w:r>
<w:r w:rsidRPr="004750BC">
<w:rPr>
<w:b />
</w:rPr>
<w:t>ing</w:t>
</w:r>
<w:rPr>
是运行属性,<w:b />
表示粗体。
突出显示中断的XML:
<w:pPr
xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main">
<w:pStyle w:val="PlainText" />
<w:numPr>
<w:ilvl w:val="0" />
<w:numId w:val="17" />
</w:numPr>
<w:rPr>
<w:rFonts w:ascii="Arial" w:hAnsi="Arial" />
<w:b />
</w:rPr>
</w:pPr>
<w:r w:rsidRPr="000558F8"
xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main">
<w:rPr>
<w:rFonts w:ascii="Arial" w:hAnsi="Arial" />
</w:rPr>
<w:t>Should we use the term “Verify” instead of “Confirm”</w:t>
</w:r>
<w:r w:rsidRPr="000558F8" w:rsidR="00F5335C"
xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main">
<w:rPr>
<w:rFonts w:ascii="Arial" w:hAnsi="Arial" />
</w:rPr>
<w:t xml:space="preserve"> as per work instruction</w:t>
</w:r>
<w:r w:rsidRPr="000558F8" w:rsidR="00411638"
xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main">
<w:rPr>
<w:rFonts w:ascii="Arial" w:hAnsi="Arial" />
</w:rPr>
<w:t>?</w:t>
</w:r>
<w:r w:rsidR="000558F8"
xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main">
<w:rPr>
<w:rFonts w:ascii="Arial" w:hAnsi="Arial" />
</w:rPr>
<w:br /> <!-- break here -->
<w:t>Med</w:t>
</w:r>
<w:r w:rsidRPr="000558F8" w:rsidR="003E76BD"
xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main">
<w:rPr>
<w:rFonts w:ascii="Arial" w:hAnsi="Arial" />
<w:b />
</w:rPr>
<w:br /> <!-- break here -->
<w:t xml:space="preserve">JD: </w:t>
</w:r>
<w:r w:rsidRPr="000558F8" w:rsidR="00A118AB"
xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main">
<w:rPr>
<w:rFonts w:ascii="Arial" w:hAnsi="Arial" />
<w:b />
</w:rPr>
<w:t>Done.</w:t>
</w:r>