gpt4 book ai didi

java - XML文本处理

转载 作者:数据小太阳 更新时间:2023-10-29 02:37:22 25 4
gpt4 key购买 nike

在我已经存储为字符串的复杂 XML 中,我必须进行一些文本/xml 处理。目标是找到某个给定 节点的开始索引。除了节点(节点/元素类引用)我还有关于嵌套的信息:整数数组说明我应该进入哪个子节点。例如。对于数组:

2 1 0

和给定的树

root
|--root-child0
|--root-child1
|--root-child2
|--root-child2-child0
|--root-child2-child1
|--root-child2-child1-child0

我正在搜索 root-child2-child1-child0

有没有干净的可能性找到这样的项目。仅查找字符串 (String.indexOf()) 是不够的 - 在我的 XML 文件中有许多相同的标签。除了这种搜索之外,还有一个额外的困难 - 在一些父标签和子标签之间可以存在一个额外的 (Collection) 标签。 (例如,root-child2 的唯一子项可能是Collection,而 root-child2-child0 和 root-child2-child1 是此Collection 的子项)

--编辑

如果这有帮助 - 除了提到的嵌套信息之外,我还可以让节点名称与我正在搜索的节点路径上的节点相对应。

--编辑2

有了这样的xml文件

<catalog>
<book id="bk101">
<author>Gambardella, Matthew</author>
<title>XML Developer's Guide</title>
<genre>Computer</genre>
</book>
<book id="bk102">
<author>Ralls, Kim</author>
<title>Midnight Rain</title>
<genre>Fantasy</genre>
<price>5.95</price>
</book>
</catalog>

假设我有 Node 对象引用 价格标签的值为 5.95。另外我有关于嵌套的信息:

1  3

说它是目录中的第二本书(从 0 开始计数)和本书的第四个标签 (id="bk102")。

我想要的是得到类似的东西

xmlRawBody.indexOf("<price>5.95</price>"). 

为什么我不能使用这个简单的方法?因为相同的标签可能会出现在其他地方。我必须使用提到的额外嵌套信息。

最佳答案

我的理解是,您拥有类似 2 1 0 的信息。由此,您为节点 root-child2-child1-chile0 命名。

要像这样获取指定的节点,如果结构是固定的,那么您可以从中创建一个 xpath。

例如,如果您的值是 2 1 0,那么构建 xpath 就像 root/root-child2/root-child2-child1/root-child2-child1-child0。您可以使用此 xpath 来获取特定的节点元素。

您可以制作一个 java 函数,它根据给定的值数组相应地准备 xpath。如果你有更多这样的元素,你需要找到一种方法来用 xpath 识别它们。因为 xpath 很容易使用 SAXParser 获取这些值(如果您不想读取整个 xml,只读取部分,则使用 SAXParser)。

希望这对您有所帮助。

关于java - XML文本处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7117931/

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