2

我想在 PDF 的元数据中添加自定义标签而不是默认标签。代替

 -<rdf:Description rdf:about="" xmlns:ls="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
-<TagId-20>
    -<rdf:Seq>
        <rdf:li>arr0</rdf:li>
        <rdf:li>arr1</rdf:li>
    </rdf:Seq>
</TagId-20>
 </rdf:Description>

我希望元数据是这样的

-<TagId-20>
    -<customTag>
        <ls:userId>USERNAME</ ls:userId >
        <ls:WONum>12-110992</ WONum >
    </customTag >
</TagId-20>

我在某处发现......要拥有自定义 xml 标签,我需要扩展 XmpArray 并实现 toString() 方法。

我实施了以下..

public class CustomXmpArray extends XmpArray {

private static final long serialVersionUID = -4551741336974797330L;

public CustomXmpArray() {
    super("dummy");
}

@Override
public String toString() {
    StringBuffer buf = new StringBuffer("");
    String s;
    for (String string : this) {
        s = string;
        buf.append(s);
    }
    return buf.toString();
}
}

我在这里面临的一个问题是,我不需要“类型”变量,但 XmpArray 没有无参数构造函数,因此我被迫将一个虚拟值传递给超类 XmpArray。我的实施错了吗?

为什么 XmpArray 没有无参数构造函数?

4

1 回答 1

0

我很困惑。为什么需要XmpArray

您如何将自定义添加XML到 XmpWriter?

有两种选择。

  1. 您创建自己的XmpSchema实现并使用该addRdfDescription(XmpSchema s)方法。在这种情况下,您将使用 和 等对象XmpArray向对象LangAlt添加特定类型的内容XmpSchema。似乎您想避免这种情况,因此您可能想要:
  2. 您创建包含您自己的 XML 的您自己的 String 并使用 addRdfDescription(String xmlns, String content) 方法。

让我引用 XMP 规范:

rdf:RDF 元素可以包含零个或多个 rdf:Description 元素。以下示例显示了单个 rdf:Description 元素:

<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
    <rdf:Description rdf:about=""
        xmlns:dc="http://purl.org/dc/elements/1.1/">
        ... Dublin Core properties go here
    </rdf:Description>
</rdf:RDF>

我想你已经有<rdf:RDF>标签了。你也有一个<rdf:Description>标签。您需要自定义模式,而不是标准模式(如都柏林核心)。

如果您想避免使用此<rdf:Description>标签,那么您是在要求我们向您展示如何做一些违反规范的事情。我们不会那样做。

如果您想在此<rdf:Description>标记中包含一些自定义 XML,那么执行以下操作就足够了:

xmpWriter.addRdfDescription("", "<TagId-20><customTag><ls:userId>USERNAME</ ls:userId ><ls:WONum>12-110992</ WONum ></customTag ></TagId-20>");

结果将是:

<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
    <rdf:Description rdf:about="" >
        <TagId-20>
            <customTag>
                <ls:userId>USERNAME</ ls:userId >
                <ls:WONum>12-110992</ WONum >
            </customTag >
        </TagId-20>
    </rdf:Description>
</rdf:RDF>

这不是你想要的吗?如果不是,你必须澄清。

另外:如果您还定义一个命名空间,而不是为参数传递一个空字符串,那会更好xmlns

顺便说一句:您可能想阅读XMP 规范

于 2013-04-26T16:22:26.707 回答