We're sorry Aspose doesn't work properply without JavaScript enabled.

Free Support Forum - aspose.com

如何判断一个paragraph是在目录中

我读取了一个文档中的所有paragraph,但是我无法判断这个paragraph是否一个目录内容。

@Rock_Zhang

您能否分享有关您的查询的更多详细信息以及示例输入和预期输出 Word 文档? 你能分享一下你所说的目录是什么意思吗? 然后,我们将为您提供有关您的查询的更多信息。

测试目录.docx (15.9 KB)

比如,这样一个文档,我会抽取它的所有paragraph节点,这些paragraph中包含一些目录(TOC)内容,我如何把它识别出来。
如下图,红框中的部分就是目录(TOC),我需要判断出这部分内容。

image.png (3.8 KB)

@Rock_Zhang

请注意,TOC 是字段,其字段代码是 { TOC \o “1-3” \h \z \u }。 请在 MS Word 中打开文档并按 Alt + F9 进行查看。

在 Aspose.Words 的 DOM 中,它被导入为 FieldToc。 您可以使用以下代码片段获取它。

Document doc = new Document(dataDir + "in.docx");
FieldToc field = (FieldToc)doc.getRange().getFields().get(0);

如果要获取 TOC 字段的段落,可以使用以下代码示例。 希望这对您有所帮助。

Document doc = new Document(dataDir + "测试目录.docx");
FieldToc field = (FieldToc)doc.getRange().getFields().get(0);

StructuredDocumentTag sdt = (StructuredDocumentTag)field.getStart().getAncestor(NodeType.STRUCTURED_DOCUMENT_TAG);
if(sdt != null)
{
	for(Paragraph paragraph :(Iterable<Paragraph>)sdt.getChildNodes(NodeType.PARAGRAPH, true))
	{
	    System.out.println(paragraph.toString(SaveFormat.TEXT));
	}	
}

你好,部分文档目录是这种类型的怎么读取呢?

image.png (12.4 KB)

请使用以下代码示例获取目录字段的隐藏超链接。 希望这对您有所帮助。

Document doc = new Document(dataDir + "测试目录.docx");
for(Field field : doc.getRange().getFields())
{
    if(field.getType() == FieldType.FIELD_HYPERLINK && ((FieldHyperlink)field).getSubAddress().startsWith("_Toc"))
    {
    	System.out.println(field.getFieldCode());
    }
}