我正在编写一个POC应用程序,我希望能够根据各种标准在Word文档中动态创建书签。
到目前为止,我已经成功地创建并添加了BookmarkStart和BookmarkEnd元素,但我正在试图弄清楚应该如何设置'Id'属性。
我在这方面可以找到的唯一规范是来自MSDN的BookmarkStart元素的样本:
id(注释标识符)
为WordprocessingML文档中的注释指定唯一标识符。 id属性的限制(如果有)由父XML元素定义 如果省略此属性,则文档不符合要求 [示例:考虑使用以下WordprocessingML片段表示的注释:
< ... w:id =“1”...>
...
< / ...>
id属性指定当前注释的ID为1.此值用于在文档内容中唯一标识此注释。结束例子]
此属性的可能值由ST_DecimalNumber简单类型(第17.18.10节)定义。
所以,我知道它必须是一个数字,它是必需的,并且id必须是唯一的(呃!)。现在,它是否应该仅在书签元素之间或在定义id的所有元素之间是唯一的?我该如何制作这样的身份证?我正在考虑使用Linq将所有ID作为数值(整数?对我来说“十进制”意味着浮点数)然后再添加一个到最大值但这看起来有点极端。
到目前为止,我的解决方案包括以下功能:
private static string ComputeNewId(OpenXmlElement root)
{
return ((from b in root.Descendants<BookmarkStart>() select Decimal.Parse(b.Id)).Max() + 1).ToString();
}
到目前为止它似乎正在起作用,但老实说我不知道从长远来看这是否会有任何可靠性,因此任何有关此问题的其他信息都将非常受欢迎。
所有。