无法使用 Element.getAttribute() 获取元素值

2023-12-14

我想读取 xml 文件。我找到了一个很好的示例,直到 xml 元素没有任何属性。当然,我尝试过如何读取属性,但它不起作用。

例如 XML

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<car>
<properties>
<test h="1.12" w="4.2">
<colour>red</colour>
</test>
</properties>
</car>

Java代码:

public void readXML(String file) {
    try {

        File fXmlFile = new File(file);
        DocumentBuilderFactory dbFactory = DocumentBuilderFactory
                .newInstance();
        DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
        doc = dBuilder.parse(fXmlFile);
        doc.getDocumentElement().normalize();

        for (int temp = 0; temp < nList.getLength(); temp++) {

            Node nNode = nList.item(temp);
            if (nNode.getNodeType() == Node.ELEMENT_NODE) {

                Element eElement = (Element) nNode;

                System.out.println("test : "
                        + getTagValue("test", eElement));
                System.out.println("colour : " + getTagValue("colour", eElement));

            }
        }

    } catch (Exception e) {
        e.printStackTrace();
    }
}

public String getTagValue(String sTag, Element eElement) {
    NodeList nlList = eElement.getElementsByTagName(sTag).item(0)
            .getChildNodes();


    Node nValue = (Node) nlList.item(0);
            System.out.println(nValue.hasAttributes());

    if (sTag.startsWith("test")) {
        return eElement.getAttribute("w");

    } else {
        return nValue.getNodeValue();
    }

}

Output:

false

test :

false

颜色 : 红色

我的问题是,我无法打印出属性。我怎样才能获得属性?


你的代码有很多错误;未声明的变量和看似疯狂的算法。我重写了它并且它有效:

import java.io.File;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;

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

public final class LearninXmlDoc
{
    private static String getTagValue(final Element element)
    {
        System.out.println(element.getTagName() + " has attributes: " + element.hasAttributes());

        if (element.getTagName().startsWith("test"))
        {
            return element.getAttribute("w");

        }
        else
        {
            return element.getNodeValue();
        }
    }

    public static void main(String[] args)
    {
        final String fileName = "c:\\tmp\\test\\domXml.xml";

        readXML(fileName);
    }

    private static void readXML(String fileName)
    {
        Document document;
        DocumentBuilder documentBuilder;
        DocumentBuilderFactory documentBuilderFactory;
        NodeList nodeList;
        File xmlInputFile;

        try
        {
            xmlInputFile = new File(fileName);
            documentBuilderFactory = DocumentBuilderFactory.newInstance();
            documentBuilder = documentBuilderFactory.newDocumentBuilder();
            document = documentBuilder.parse(xmlInputFile);
            nodeList = document.getElementsByTagName("*");

            document.getDocumentElement().normalize();

            for (int index = 0; index < nodeList.getLength(); index++)
            {
                Node node = nodeList.item(index);
                if (node.getNodeType() == Node.ELEMENT_NODE)
                {
                    Element element = (Element) node;

                    System.out.println("\tcolour : " + getTagValue(element));
                    System.out.println("\ttest : " + getTagValue(element));
                    System.out.println("-----");
                }
            }
        }
        catch (Exception exception)
        {
            exception.printStackTrace();
        }
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无法使用 Element.getAttribute() 获取元素值 的相关文章

  • 使用 s:select 标签在下拉菜单中使用 i18n [重复]

    这个问题在这里已经有答案了 我的 JSP 页面中有一个下拉菜单 它是通过
  • 在 Gradle 中运行自定义测试任务而无需重新编译

    我有一个 Gradle 自定义测试任务来运行我的集成测试 我希望能够在 Gradle 不自动完成之前的所有阶段并仅运行测试的情况下运行它 有没有办法在每个构建步骤不使用 x 的情况下执行此操作 None
  • 调试 xslt 的工具

    我有一个 Java servlet 它生成 XML 使用 XSLT 样式表对其进行翻译 然后显示生成的 HTML 这是我第一次使用 XSLT 调试 XSLT 的好方法是什么 我也有 或可以获得 一些示例 XML 文件来应用转换 但我什至不确
  • 在 JList 中写一些东西

    嘿 我还有另一个问题 我创建JList在我的主窗口中 现在我想向其中添加一些内容 我这样做 private void jButton2ActionPerformed java awt event ActionEvent evt Dodaj
  • 图像在 3D 空间中绕 Y 轴旋转

    我有一个 BufferedImage 我想用 theta 角而不是仿射变换绕 Java 中的 Y 轴旋转图像 图片 旋转将如下图所示 矩形将是图像 我可以通过旋转图像的每个像素并绘制图像来做到这一点 因为我必须旋转很多图像 所以我认为这不是
  • Java:Swing:设置JButton的位置

    我想实现以下布局 OK
  • 如何使用 Javascript 将 HTML 表单数据输出到 XML 文件?

    我目前正在尝试弄清楚如何将 HTML 表单数据输出到 XML 文件 这是我过去几天一直在研究的一个想法 目的是创建一个用于 Windows 7 安装的 autounattended xml 文件 目前我的 HTML 如下
  • C# Xml-使用 IXmlSerialized 序列化派生类

    我有一个与 XML 序列化兼容的基类和一个实现 IXmlSerialized 的派生类 在此示例中 基类确实实现了 IXmlSerializable using System Diagnostics using System Text us
  • 相对重力

    我最近开始使用jMonkey引擎 这非常好 但我在尝试实现相对重力时陷入了困境 我想让行星彼此围绕轨道运行 不一定是完美的圆形轨道 取决于速度 所以每个对象都应该影响其他对象 我现在拥有的 关闭全球重力 bulletAppState get
  • 是否有适用于 Java 的 CalDAV 客户端库? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我想使用 CalDAV 协议与我的日
  • 对于 XML 路径:如何将属性和值保留在同一节点中

    我在使用时遇到一些问题FOR XML PATH 我的情况是 我运行了如下脚本 属性CCY和价值AMOUNT合并到同一个节点 脚本1 SELECT USD AS Amount Ccy 123000 AS Amount Foo AS Foo F
  • 更改JavaFX TableView字体大小[重复]

    这个问题在这里已经有答案了 您好 我想在表视图列内的文本上设置字体 我如何用 Java 做到这一点 这是我的代码 感谢帮助 private final TableView
  • 用二进制数、常规数字和格雷编码填充矩阵

    我有一个包含 1 s 或 0 s 的矩阵 用于创建二进制数 其宽度为n 对于 n 2 和 n 3 它看起来像 00 000 01 001 10 010 11 011 100 101 110 111 等等 现在我正在使用以下代码来生成它 in
  • 为什么我无法使用 HttpUrlConnection 上传第一个文件块?

    在我的项目中 我应该从一台服务器逐块下载文件 并将每个块立即上传到另一台服务器 我有一个应该下载的文件的 URL 我们就这样称呼它吧downloadUrl 因此 这就是我逐块下载文件的方式 val chunkSize 1024 1024 B
  • 使用 ProcessBuilder 启动 CMD

    我尝试使用以下代码在 Windows 中启动 CMD 应用程序 但它无法按预期工作 来自不同网站的几个示例表明 cmd 作为 ProcessBuilder 构造中的参数应该有效 我需要做什么才能让我的 Java 应用程序在 Windows
  • Java无损保存原始JPEG

    如下所示 我有第一张图像是原始 JPEG 图像 第二张图像用于缓冲图像 然后使用保存http www lac inpe br JIPCookbook 6040 howto compressimages jsp http www lac in
  • 不鼓励在Web应用程序中使用线程吗?

    我们与同事就在 Java 的 Web 应用程序中使用线程进行了激烈的讨论 他们的观点是 不建议在 Java Web 应用程序中使用线程 因为它们不受容器管理 一般来说 我对此表示同意 因为线程可能会干扰容器 但是 如果它不是 Java EE
  • 使用替换但不使用根元素的 Jaxb 继承

    我正在浏览布莱斯的博客http blog bdoughan com 2010 11 jaxb and inheritance using substitution html http blog bdoughan com 2010 11 ja
  • 当框架被拖动时,如何设置 JWindow 的位置位于文本字段下方?

    我正在制作一个自动完成项目 就像谷歌一样 我的框架中有一个 jtextfield 每当我在该字段中输入内容时 该文本字段下方就会出现一个 JWindow 并且该窗口来自另一个类 现在的问题是 每当我拖动框架时 如何使窗口始终出现在文本字段下
  • 如何使用 iBatis (myBatis) 的注释进行 IN 查询?

    我们只想在 MyBatis 中使用注释 我们确实在努力避免使用 xml 我们尝试使用 IN 子句 Select SELECT FROM blog WHERE id IN ids List

随机推荐

  • 对另一个库中函数的未定义引用

    我正在尝试编译一个引用一个库的目标代码 这是libexample c的代码 include libexample h include
  • Google OpenId Connect 迁移:在 ASP.NET 应用程序中获取 openid_id

    我已经阅读了大量的 Google 文档和 SO Q A 但没有运气 我想知道是否有人按照 Google 的建议成功使用了 OpenId 到 OpenId Connect 迁移 这就是我们以前所做的 IAuthenticationRespon
  • res.sendFile 发送静态文件+对象

    我必须使用 Express 提供 html 文件 但也想随响应一起发送一个对象 我怎样才能同时发送detail html和对象 car 以及如何在客户端访问它 app get unit id function req res console
  • 当切换和禁用 Android 开关全部变灰时

    如上所示 当 iOS 中的开关切换被禁用且切换时具有颜色 但在 Android 中则没有 在android上可以实现同样的效果吗 如果您只想更改拇指颜色以匹配 iOSUISwitch轨道绿色 41D150 您可以更改colorSwitchT
  • 为什么 Ruby 中很少使用 throw 和 catch ? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心以获得指导 我最近陷入了一场讨论rai
  • Docker 与 GUI 应用程序

    TL DR 我需要从 Docker 容器后台运行的 Java 应用程序启动 Selenium 由于在运行时无法访问 X11 环境 启动失败 看Dockerfile下面是我开始的部分 我应该怎么办 Problem 我从一个简单的开始Docke
  • mex 无法识别内联

    我正在尝试编译libdc1394 的 matlab 包装器这是火线相机的库 我收到一个奇怪的错误 涉及头文件中的一些内联函数 我正在使用 gcc 4 6 开发 ubuntu 12 04 我已经成功编译了其他 mex 文件 这个包装器在 Ma
  • 将 Unity 应用程序集成到现有 iOS 应用程序

    我有一个从 Unity 5 导出的 iOS 应用程序 并且我还使用 vuforia 将 ar 添加到该 Unity 应用程序中 现在我想将 Unity 应用程序集成到我现有的 iOS 应用程序中 我已关注http www the nerd
  • 是否有必要为只读线程和只写线程创建互斥体?

    有2个线程 一个只读取signal 另一个只设置signal 是否有必要创建互斥体signal原因是什么 UPDATE 我所关心的是如果两个线程同时读取 设置它是否会崩溃 您可能希望为此使用原子变量 尽管互斥体也可以工作 问题在于 无法保证
  • 保持纵横比和固定高度

    所以我想保持一个特定的纵横比div 其中高度是固定的 过去我曾经这样做过 但只有在使用固定宽度时才这样做 one one position relative one one before display block content widt
  • 等待“正在加载”图标从页面上消失

    我们正在为 Web 应用程序进行自动化 大多数场景都会在页面中心出现一个加载图标 我们需要等待这个加载图标消失 HTML div style display none div div div div 示例 我们在大多数场景下都有搜索功能 当
  • Phonegap 文件上传 Java 服务器

    我正在尝试在 Java 服务器上上传图像 该文件正在从 Android 设备传输 但在服务器上保存 null 这是服务器代码 public UploadMediaServerResponse uploadFileForFunBoard Fo
  • Xamarin 自定义视图 ClassNotFoundException

    我是 Xamarin 的新手 我试图在 Android 应用程序中创建自己的视图 但它在构造函数上抛出 ClassNotFoundException 我正在寻找类似的问题 但没有找到类似的问题 仅here我认为可能非常相似 但实际上并没有解
  • 如何用bindvalue和%准备语句?

    是的 当我尝试对之前看起来像这样的变量使用绑定值时 我遇到了问题 users firstname LIKE firstname 现在看起来像这样 users firstname LIKE firstname 但还是不行 也试过了 users
  • 无法使用代理设置连接到 SOAP API

    我正在使用 requests 和 zeep 库通过 SOAP API 连接到服务器 如果我手动设置互联网代理 我可以连接 但是 我打算在脚本中使用代理设置来自动化该过程 我正在使用以下代码块来执行此操作 但出现以下错误 谁能帮助我 我在哪里
  • SQL有多少条记录以相同字母开头

    所以我在数据库的 A 列中有数千条记录 我想看看有多少个字母以字母开头 以及所有个位数 所以我需要一个计数和与之相关的字母 我还想查看所有两个字母数字组合 即 aa ab ac ad ae 等及其计数 还有三个和四个字符等 一般情况下你可以
  • 如何阻止光标跳到末尾?

    我正在使用 Antd 输入库 每当我在单词的开头或中间输入时 我的光标就会跳到结尾 const handleOpenAnswer key value gt handleFieldChange settings settings key va
  • 如何在 Spring Boot 应用程序中使用 Hibernate Validation 进行 Bean 验证?

    我正在 Spring Boot 应用程序中学习 Hibernate 验证 并且我有一个 Rest 控制器和一个 POST 方法 当我发出请求时 如果某个字段未成功验证 客户端应该收到 400 Bad Request 并在正文中收到类似 验证
  • WPFToolkit DataGrid:组合框列不会立即更新选定值绑定

    我正在使用 WPF 工具包 DataGrid 和 DataGridComboBoxColumn 一切正常 除了当组合框上发生选择更改时 选定的值绑定源不会立即更新 仅当组合框失去焦点时才会发生这种情况 有没有人遇到过这个问题并有任何建议的解
  • 无法使用 Element.getAttribute() 获取元素值

    我想读取 xml 文件 我找到了一个很好的示例 直到 xml 元素没有任何属性 当然 我尝试过如何读取属性 但它不起作用 例如 XML