gpt4 book ai didi

lotus-notes - Lotus Notes 和 C# : NotesRichTextItem how to recreate content or loop through elements in respective order

转载 作者:行者123 更新时间:2023-12-04 03:19:40 31 4
gpt4 key购买 nike

我目前正在使用 NuGet 的 C# Interop Domino 程序集导出 Lotus Notes 数据库,

我还没有找到按照输入顺序识别 NotesRichTextItem 中的对象或元素的方法,例如,我可能先输入一个段落,然后是表格,然后是附件。
有没有办法按照元素的顺序循环遍历元素?

我找到了一种使用 FindFirstElement 查找元素的方法,但是您必须传递您要查找的元素类型,这非常困难,因为无序提取所有元素会使内容失去其上下文。

谢谢

最佳答案

有一种方法可以使用 分析 Notes 文档的 RichText 项目。 DXL - Notes 的特殊 XML 格式。使用 DxlExporter将 Notes 文档导出为 DXL 格式。然后您可以“遍历”XML 并以正确的顺序获取包含元素的 RichText 项目的内容。

对于这个 RichText 项目,例如

enter image description here

你会得到这个 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();
}
}
}

关于lotus-notes - Lotus Notes 和 C# : NotesRichTextItem how to recreate content or loop through elements in respective order,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17599023/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com