我目前正在使用NuGet的C#Interop Domino程序集导出Lotus notes数据库,
我没有找到按照输入顺序识别NotesRichTextItem中的对象或元素的方法,例如,我可能先输入一个段落,然后输入一个表格,然后输入一个附件。 有没有办法以尊重顺序循环元素?
我找到了一种使用FindFirstElement查找元素的方法,但是你必须传递你正在寻找的元素类型,这非常困难,因为在没有顺序的情况下提取所有元素会使内容失去其上下文。
感谢
答案 0 :(得分:3)
有一种方法可以使用 DXL (Notes的特殊XML格式)分析Notes文档的RichText项目。使用DxlExporter
将Notes文档导出为DXL格式。您可以“遍历”然后通过XML并使用正确的顺序获取RichText项目的内容。
对于此RichText项目,例如
你会得到这个DXL
<item name='Body'>
<richtext>
<pardef id='1'/>
<par def='1'>aaaaaaa</par>
<table widthtype='fixedleft' refwidth='1.0667in'>
<tablecolumn width='0.6729in'/>
<tablecolumn width='0.3938in'/>
<tablerow>
<tablecell>
<pardef id='3' keepwithnext='true' keeptogether='true'/>
<par def='3'>111</par></tablecell>
<tablecell>
<pardef id='4' keepwithnext='true' keeptogether='true'/>
<par def='4'>222</par></tablecell>
</tablerow>
<tablerow>
<tablecell><par def='3'>333</par></tablecell>
<tablecell><par def='4'>444</par></tablecell>
</tablerow>
</table>
<pardef id='5' leftmargin='1.2500in' list='bullet'/>
<par def='5'>xxx</par>
<par def='5'>yyy</par>
<par def='5'>zzz</par>
<pardef id='6' leftmargin='1in'/>
<par def='6'>
<attachmentref name='icon16.gif' displayname='icon16.gif'>
<picture height='34px' width='61px'>
<notesbitmap>lQAmAAAAAAAAAAAAA...</notesbitmap>
<caption>icon16.gif</caption>
</picture>
</attachmentref>
</par>
</richtext>
</item>
这是一个将所选文档导出到文件的Java代理。
import lotus.domino.*;
public class JavaAgent extends AgentBase {
@Override
public void NotesMain() {
try {
Session session = getSession();
AgentContext agentContext = session.getAgentContext();
DocumentCollection dc = agentContext.getUnprocessedDocuments();
String filename = "c:/temp/exportDocs.dxl";
Stream stream = session.createStream();
if (stream.open(filename)) {
stream.truncate();
DxlExporter exporter = session.createDxlExporter();
exporter.setRichTextOption(0);
exporter.setMIMEOption(0);
stream.writeText(exporter.exportDxl(dc));
} else {
System.out.println("Cannot open " + filename);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
答案 1 :(得分:2)
不幸的是,API无法执行此操作:
导航属于同一类型的元素。你可以找到或得到 类型的第一个元素,类型的下一个元素和第n个元素 一种类型的元素。 无论如何都无法找到或获取元素 类型。强>
更新:我忘了提到您可能想要查看Genii Software中名为MidasLSX的第三方工具,该工具可能对您有所帮助。 http://www.geniisoft.com/showcase.nsf/MidasLSX