gpt4 book ai didi

java - 创建自定义 XPath 函数来修改 Java 中的节点集

转载 作者:太空宇宙 更新时间:2023-11-04 14:13:41 25 4
gpt4 key购买 nike

我正在 Java 中创建一个自定义 XPath 函数,用于修改节点集中的文本节点。我需要传入一个节点集,让代码循环遍历每个节点并返回一个节点集。我见过许多修改字符串的自定义 XPath 函数的示例,但没有一个能够成功接收节点集并返回节点集。我也不知道如何映射返回的节点集。

以此源 XML 为例。

<Library>
<Bookshelf>
<Book>alice in wonderland</Book>
<Book>the giving tree</Book>
<Author>shel silverstein</Author>
</Bookshelf>
</Library>

然后我希望这是我的目标 XML。我选择将每个单词的第一个字母大写,但这只是一个例子。不用担心文本修改部分,我明白了。

<Library>
<Bookshelf>
<Book>Alice In Wonderland</Book>
<Book>The Giving Tree</Book>
<Author>Shel Silverstein</Author>
</Bookshelf>
</Library>

这里最重要的是,我想使用 Java 将其实现为自定义 XPath 函数,以便可以在设计器模式下拖放它。我在此转换的每一侧都使用文件适配器,因此所有节点的结构已经给出,我必须使我的结果适合。

最佳答案

您需要创建自己的 NodeList 实现。就像我使用的东西:

package org.gramar.model;

import java.util.List;

import org.w3c.dom.Node;
import org.w3c.dom.NodeList;

public class NodeArray implements NodeList {

private Node nodes[];

public NodeArray(Node[] nodes) {
this.nodes = nodes;
}

public NodeArray(List<Node> nodes) {
this.nodes = new Node[nodes.size()];
nodes.toArray(this.nodes);
}

@Override
public Node item(int index) {
return nodes[index];
}

@Override
public int getLength() {
return nodes.length;
}

}

您的 XPathFunction 代码将具有如下内容:

ArrayList<Node> nodes = ... logic to gather the nodes you want to return
return new NodeArray(nodes);

关于java - 创建自定义 XPath 函数来修改 Java 中的节点集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27993735/

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