在不知道xml文件结构的情况下解析xml文件内容

加拿大信条

我一直在努力学习一些使用Java解析文件的新技术,而在msot方面进展顺利。但是,我不知道如何将xml文件解析为收据后未知的结构。如果您知道结构(getElementByTagName似乎是行之有效的方法)的话,有很多示例,但是没有动态选项,至少我没有发现。

因此,这个问题的tl; dr版本如何在我不依赖于知道其结构的情况下如何解析xml文件?

杰森c

解析部分很容易;就像注释中所述的holderdarocha一样,解析器仅需要有效的XML,而不关心结构。您可以使用Java的标准DocumentBuilder来获取Document

InputStream in = new FileInputStream(...);
Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(in);

(如果要解析多个文档,则可以继续重复使用同一文档DocumentBuilder。)

然后,您可以从根文档元素开始,然后使用熟悉的DOM方法:

Element root = doc.getDocumentElement(); // perform DOM operations starting here.

至于处理它,这实际上取决于您要处理的内容,但是您可以使用Nodelike的方法,getFirstChild()getNextSibling()根据结构,标签和属性的合适情况遍历子项和进程。

考虑以下示例:

import java.io.ByteArrayInputStream;
import java.io.InputStream;
import javax.xml.parsers.DocumentBuilderFactory;   
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;


public class XML {

    public static void main (String[] args) throws Exception {

        String xml = "<objects><circle color='red'/><circle color='green'/><rectangle>hello</rectangle><glumble/></objects>";

        // parse
        InputStream in = new ByteArrayInputStream(xml.getBytes("utf-8"));
        Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(in);

        // process
        Node objects = doc.getDocumentElement();
        for (Node object = objects.getFirstChild(); object != null; object = object.getNextSibling()) {
            if (object instanceof Element) {
                Element e = (Element)object;
                if (e.getTagName().equalsIgnoreCase("circle")) {
                    String color = e.getAttribute("color");
                    System.out.println("It's a " + color + " circle!");
                } else if (e.getTagName().equalsIgnoreCase("rectangle")) {
                    String text = e.getTextContent();
                    System.out.println("It's a rectangle that says \"" + text + "\".");
                } else {
                    System.out.println("I don't know what a " + e.getTagName() + " is for.");
                }
            }
        }

    }

}

输入的XML文档(例如,硬编码)为:

<objects>
    <circle color='red'/>
    <circle color='green'/>
    <rectangle>hello</rectangle>
    <glumble/>
</objects>

输出为:

这是一个红色的圆圈!
这是一个绿色的圆圈!
这是一个矩形,上面写着“你好”。
我不知道这是什么意思。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在不知道元素名称的情况下获取XML元素内容PHP

来自分类Dev

在不知道元素名称的情况下获取XML元素内容PHP

来自分类Dev

在不知道结构的情况下用python读取二进制文件

来自分类Dev

在不知道类型的情况下从文件中读取

来自分类Dev

nlohmann 在不知道密钥的情况下解析 json 文件

来自分类Dev

如何在不知道XLS文件的工作表名称的情况下安全地将XLS工作表转换为XML文件?

来自分类Dev

在不知道 JSON 结构的情况下解析 Java 中的嵌套 JSON

来自分类Dev

在不知道结构的情况下解组嵌套的json

来自分类Dev

如何在不知道我在 Python 中查找的对象名称的情况下解析 JSON 文件?

来自分类Dev

在不知道键的情况下解析json

来自分类Dev

在不知道文件名的情况下使用 Javascript Fetch API 读取文件

来自分类Dev

如何在不知道元素的情况下循环所有XML属性

来自分类Dev

在不知道路径的情况下用Java写入属性文件

来自分类Dev

如何在不知道bash扩展名的情况下提取各种zip文件

来自分类Dev

如何在不知道名称的情况下访问.mat文件中的“值”?

来自分类Dev

在不知道其名称的情况下,逐行读取bash中的txt文件

来自分类Dev

在不知道编码的情况下使用Python读取文件

来自分类Dev

PHP-事先不知道文件夹名称的情况下读取它们

来自分类Dev

在不知道Java中特定文件夹中的名称的情况下加载类

来自分类Dev

在不知道其名称的情况下,逐行读取bash中的txt文件

来自分类Dev

ssis在不知道现有名称的情况下重命名文件

来自分类Dev

在不知道索引的情况下从命令行参数打开文件?

来自分类Dev

打开一个不知道完整名称的XML文件并解析xml

来自分类Dev

如何在不知道其扩展名但又知道全名的情况下打开文件?

来自分类Dev

是否可以在不知道每一列的宽度或列名并将其转换为CSV的情况下解析固定宽度的文件?

来自分类Dev

在不知道文件系统类型或源设备的情况下使用 mount() 重新挂载文件系统

来自分类Dev

如何在不知道文件名的情况下指定下载文件夹?

来自分类Dev

Python 和 Pandas - 在不知道文件名的情况下读取目录中唯一的 CSV 文件

来自分类Dev

在不知道文件名的情况下从网站下载文件,然后提取并移动到设置位置

Related 相关文章

  1. 1

    在不知道元素名称的情况下获取XML元素内容PHP

  2. 2

    在不知道元素名称的情况下获取XML元素内容PHP

  3. 3

    在不知道结构的情况下用python读取二进制文件

  4. 4

    在不知道类型的情况下从文件中读取

  5. 5

    nlohmann 在不知道密钥的情况下解析 json 文件

  6. 6

    如何在不知道XLS文件的工作表名称的情况下安全地将XLS工作表转换为XML文件?

  7. 7

    在不知道 JSON 结构的情况下解析 Java 中的嵌套 JSON

  8. 8

    在不知道结构的情况下解组嵌套的json

  9. 9

    如何在不知道我在 Python 中查找的对象名称的情况下解析 JSON 文件?

  10. 10

    在不知道键的情况下解析json

  11. 11

    在不知道文件名的情况下使用 Javascript Fetch API 读取文件

  12. 12

    如何在不知道元素的情况下循环所有XML属性

  13. 13

    在不知道路径的情况下用Java写入属性文件

  14. 14

    如何在不知道bash扩展名的情况下提取各种zip文件

  15. 15

    如何在不知道名称的情况下访问.mat文件中的“值”?

  16. 16

    在不知道其名称的情况下,逐行读取bash中的txt文件

  17. 17

    在不知道编码的情况下使用Python读取文件

  18. 18

    PHP-事先不知道文件夹名称的情况下读取它们

  19. 19

    在不知道Java中特定文件夹中的名称的情况下加载类

  20. 20

    在不知道其名称的情况下,逐行读取bash中的txt文件

  21. 21

    ssis在不知道现有名称的情况下重命名文件

  22. 22

    在不知道索引的情况下从命令行参数打开文件?

  23. 23

    打开一个不知道完整名称的XML文件并解析xml

  24. 24

    如何在不知道其扩展名但又知道全名的情况下打开文件?

  25. 25

    是否可以在不知道每一列的宽度或列名并将其转换为CSV的情况下解析固定宽度的文件?

  26. 26

    在不知道文件系统类型或源设备的情况下使用 mount() 重新挂载文件系统

  27. 27

    如何在不知道文件名的情况下指定下载文件夹?

  28. 28

    Python 和 Pandas - 在不知道文件名的情况下读取目录中唯一的 CSV 文件

  29. 29

    在不知道文件名的情况下从网站下载文件,然后提取并移动到设置位置

热门标签

归档