Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Java读取Xml属性?_Java_Xml - Fatal编程技术网

如何使用Java读取Xml属性?

如何使用Java读取Xml属性?,java,xml,Java,Xml,给定如下所示的xml文档: 我想借助System.out.println()显示城市数据、邮政编码和日期属性 有什么想法吗?查找XSLT。我从未使用过它,但它可以格式化XML文档。Java有几个用于板载XML解析的功能—和API。对于初学者来说,DOMAPI是最合适的。看一看 我必须在这里反驳Thom关于XSLT的观点。虽然它是一个功能强大的API,但它相当复杂,可能会让初学者感到害怕和沮丧。您应该了解以下内容: JDOM: 及 SAX: Java XML的简单解析器DOM和SAX都是低级A

给定如下所示的xml文档:


我想借助
System.out.println()
显示城市数据邮政编码日期属性


有什么想法吗?

查找XSLT。我从未使用过它,但它可以格式化XML文档。

Java有几个用于板载XML解析的功能—和API。对于初学者来说,DOMAPI是最合适的。看一看


我必须在这里反驳Thom关于XSLT的观点。虽然它是一个功能强大的API,但它相当复杂,可能会让初学者感到害怕和沮丧。

您应该了解以下内容:

JDOM:

SAX:


Java XML的简单解析器

DOM和SAX都是低级API,很难使用它们。 这个问题是关于

java中的XML解析

因此,这可以通过SAX和DOM实现,但使用起来会更容易。 这也被称为


希望这能帮到你。

我有解决办法。这个解决方案我从未在这个博客或其他任何地方看到过。我希望它对其他人有用

package Main;

import java.io.File;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.DocumentBuilder;
import org.w3c.dom.Document;

public class XmlTest
{

    public static void main(String argv[]) 
    {

        try 
        {
            DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
            DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
            Document doc = dBuilder.parse(new File("xmlPrueba.xml"));
            doc.getDocumentElement().normalize();



            System.out.println("City: " +
                    documento.getDocumentElement().getChildNodes().item(0).getFirstChild().getChildNodes().item(0).getAttributes().getNamedItem("data").getNodeValue());

            System.out.println("Postal Code: " +
                    documento.getDocumentElement().getChildNodes().item(0).getFirstChild().getChildNodes().item(1).getAttributes().getNamedItem("data").getNodeValue());

            System.out.println("Date: " +
                    documento.getDocumentElement().getChildNodes().item(0).getFirstChild().getChildNodes().item(4).getAttributes().getNamedItem("data").getNodeValue());

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

    }
}
还是更容易


谢谢你的帮助

通过类型声明和基本的空检查稍微清理一下:

从“dom”值中的任何节点开始

NodeList l = dom.getElementsByTagName("tagname");

for (int j=0; j<l.getLength(); ++j) {
    Node prop = l.item(j);
    NamedNodeMap attr = prop.getAttributes();
    if (null != attr) {
        Node p = attr.getNamedItem("data");
        log.debug(p.getNodeValue());
    }
}
NodeList l=dom.getElementsByTagName(“标记名”);
对于(int j=0;j可能重复的&
NodeList l = dom.getElementsByTagName("tagname");

for (int j=0; j<l.getLength(); ++j) {
    Node prop = l.item(j);
    NamedNodeMap attr = prop.getAttributes();
    if (null != attr) {
        Node p = attr.getNamedItem("data");
        log.debug(p.getNodeValue());
    }
}