java - XML文本处理

标签 java xml text-processing

在我已经存储为字符串的复杂 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/

相关文章:

xml - 不允许在 DTD 和 XSD 模式中进行非确定性元素声明的原因是什么?

bash - 如何删除一个文件中存在于另一个文件中的行?

java - 连接两个 Java 应用程序的适当方法

java - 如何在Java中创建具有随机长度列的多维数组?

java - Selenium java测试NG : Is it possible to use dataprovider data partially in testng test method

java - 在没有 DocumentBuilderFactory 或 DocumentBuilder 的情况下将 JDom 1.1.3 元素转换为文档

java - 正则表达式:提取 2 个标记之间的 DNA 信息

android - 在 Android 中访问菜单 XML 文件中的全局变量

linux - 当分隔符是单词的一部分时使用awk进行文本处理?

unique - 查找两个文件之间的唯一行