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

时间:2015-10-28 22:00:38

标签: .net ms-word aspose

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

在带有DocumentBuilder.InsertHtml()的书签中插入html表后,我想检索此表的Aspose节点

但是当迭代书签周围的节点时,我无法找到该表,即使文档中的表总数正确递增。还有另一种方式吗?

1 个答案:

答案 0 :(得分:2)

您可以通过实施 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");

和班级的定义&#39; HandleNodeChanging&#39;实现INodeChangingCallback接口的方法如下:

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一起担任开发者布道者。