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

.net 使用Aspose,如何在inserthtml之后获取表节点?,.net,ms-word,aspose,.net,Ms Word,Aspose,我正在使用Aspose库格式化Word文档 使用DocumentBuilder.InsertHtml()在书签处插入html表后,我想检索此表的Aspose节点 但是当遍历书签周围的节点时,我找不到表,即使文档中的表总数正确地增加了。还有其他方法吗?您可以通过实现INodeChangingCallback接口来满足此要求。下面是代码示例: Document doc = new Document(MyDir + @"input.docx"); DocumentBuilder builder = n

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

使用
DocumentBuilder.InsertHtml()
在书签处插入html表后,我想检索此表的Aspose节点


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

您可以通过实现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");
documentdoc=新文档(MyDir+@“input.docx”);
DocumentBuilder=新的DocumentBuilder(文档);
建筑商。移动图书(“tbl”);
HandleNodeChanging handler=new HandleNodeChanging();
doc.NodeChangingCallback=处理程序;
建筑商插入TML(“123456”);
foreach(handler.InsertedTables中的表)
{
//你的逻辑在这里
}    
文件保存(MyDir+@“15.9.0.docx”);
实现INodeChangingCallback接口的类“handleNodeChangeing”的定义如下:

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>();
}
public类HandleNodeChanging:INodeChangingCallback
{
void INodeChangingCallback.NodeInserted(NodeChangingArgs args)
{
if(args.Node.NodeType==NodeType.Table)
添加(参数节点);
}
void INodeChangingCallback.NodeInserting(NodeChangingArgs args)
{
//无所事事
}
void INodeChangingCallback.NodeRemoved(NodeChangingArgs args)
{
//无所事事
}
void INodeChangingCallback.noderremoving(NodeChangingArgs args)
{
//无所事事
}
公共列表插入表
{
获取{return mInsertedTables;}
}
私有只读列表mInsertedTables=新列表();
}
希望,这有帮助


我与Aspose合作,担任开发人员福音传道者。

谢谢!我可以用这个方法检索插入的节点。