使用 Aspose,如何在 inserthtml 之后获取 table 节点?

With Aspose, how to get a table node after inserthtml?

我正在使用 Aspose 库来格式化 Word 文档。

DocumentBuilder.InsertHtml() 的书签处插入 html table 后,我想 检索此 table[= 的 Aspose 节点19=].

但是当遍历书签周围的节点时我找不到 table,即使文档中 table 的总数正确递增。还有其他方法吗?

您可以通过实施 INodeChangingCallback 接口 来满足此要求。这是代码示例:

Document doc = new Document(MyDir + @"input.docx");
DocumentBuilder builder = new DocumentBuilder(doc);

builder.MoveToBookmark("tbl");

HandleNodeChanging handler = new HandleNodeChanging();
doc.NodeChangingCallback = handler;
builder.InsertHtml("<table border='1'><tr><td>1</td><td>2</td><td>3</td></tr><tr><td>4</td><td>5</td><td>6</td></tr></table>");

foreach (Table table in handler.InsertedTables)
{
    // Your logic here
}    

doc.Save(MyDir + @"15.9.0.docx");

而实现INodeChangingCallback接口的class 'HandleNodeChanging'定义如下:

public class HandleNodeChanging : INodeChangingCallback
{
    void INodeChangingCallback.NodeInserted(NodeChangingArgs args)
    {
        if (args.Node.NodeType == NodeType.Table)
            mInsertedTables.Add(args.Node);
    }

    void INodeChangingCallback.NodeInserting(NodeChangingArgs args)
    {
        // Do Nothing
    }

    void INodeChangingCallback.NodeRemoved(NodeChangingArgs args)
    {
        // Do Nothing
    }

    void INodeChangingCallback.NodeRemoving(NodeChangingArgs args)
    {
        // Do Nothing
    }

    public List<Node> InsertedTables
    {
        get { return mInsertedTables; }
    }

    private readonly List<Node> mInsertedTables = new List<Node>();
}

希望,这对您有所帮助。

我在 Aspose 工作,担任开发人员传播者。