【问题标题】:Parsing Xml file using Java throws Exception. Why?使用 Java 解析 Xml 文件会引发异常。为什么?
【发布时间】:2013-07-02 12:47:57
【问题描述】:

当我试图获取根元素 Company 的属性时,我发现了以下问题,还有一些异常。

但是我进口了我需要的一切;然后eclipse也说删除未使用的导入。

我想知道为什么即使在我导入所有内容之后也会发生这种情况, 请给我一些想法来消除这个错误。

这也是进行 xml 解析的方法吗?有没有其他简单的方法可以 做同样的事情吗?

import java.io.EOFException;
import java.io.File;
import javax.lang.model.element.Element;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import javax.lang.model.element.Element;

public class DomTest1 {
    private static final String file = "test1.xml";

    public static void main(String[] args) {
        if (args.length>0) {
            file = args[0];
        }

        try {
            DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();
            DocumentBuilder builder=factory.newDocumentBuilder();
            Document document=builder.parse(new File(file));
            Element root=document.getDocumentElement();
            System.out.println(root.getTagName());
            System.out.printf("name: %s%n", root.getAttribute("name"));
            System.out.printf("sHortname: %s%n", root.getAttribute("sHortname"));
            System.out.printf("mission : %s%n", root.getAttribute("mission"));
        } catch(EOFException e) {
            e.printStackTrace();
        }
    }
}

Exception in thread "main" java.lang.Error: Unresolved compilation problems: 
Type mismatch: cannot convert from org.w3c.dom.Element to javax.lang.model.element.Element
The method getTagName() is undefined for the type Element
The method getAttribute(String) is undefined for the type Element
The method getAttribute(String) is undefined for the type Element
The method getAttribute(String) is undefined for the type Element

at DomTest1.main(DomTest1.java:23)

【问题讨论】:

  • 你需要从 org.w3c.dom.Element 导入元素

标签: java xml xml-parsing


【解决方案1】:

你有

import javax.lang.model.element.Element;

但你想要

import org.w3c.dom.Element;

改为。

另外,关于这个:

这也是进行 xml 解析的方法吗?有没有其他选择和 做同样的事情的简单方法?

您正在使用 java 提供的开箱即用的方法来进行 xml 解析。使用第三部分库有几个更好的选择。我建议测试jdom,它要简单得多。参见示例here

【讨论】:

  • ...“你有”它甚至 两次
  • 好的.. 但现在在 Element element=document.getDocument Element 这一行中。但是 Eclipse 建议我为“将 Cast 添加到元素”,为什么?错误在哪里?
【解决方案2】:

问题是因为这个

import javax.lang.model.element.Element;

使用这个导入语句

import org.w3c.dom.Element

【讨论】:

  • 那我该怎么办?删除那个导入?
  • 你应该简单地将import javax.lang.model.element.Element;替换为import org.w3c.dom.Element;
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-27
  • 1970-01-01
相关资源
最近更新 更多