java - 如何使用java获取xml节点的属性值

标签 java xml xmlnode xml-attribute

我有一个看起来像这样的 xml:

{ <xml><ep><source type="xml">...</source><source type="text">..</source></ep></xml>}

这里我想检索“源类型”的值,其中 type 是一个属性。

我试过这样,但它不起作用:

 DocumentBuilderFactory domFactory = DocumentBuilderFactory.newInstance();
                try {
                    DocumentBuilder builder = domFactory.newDocumentBuilder();
                    Document dDoc = builder.parse("D:/workspace1/ereader/src/main/webapp/configurations/config.xml");
                    System.out.println(dDoc);
                    XPath xPath = XPathFactory.newInstance().newXPath();
                    Node node = (Node) xPath.evaluate("//xml/source/@type/text()", dDoc, XPathConstants.NODE);
                    System.out.println(node);
                } catch (Exception e) {
                    e.printStackTrace();

我也试过了:

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
            DocumentBuilder builder = factory.newDocumentBuilder();
            InputSource is = new InputSource(new StringReader("config.xml"));
            Document doc = builder.parse(is);

            NodeList nodeList = doc.getElementsByTagName("source");

            for (int i = 0; i < nodeList.getLength(); i++) {                
                Node node = nodeList.item(i);

                if (node.hasAttributes()) {
                    Attr attr = (Attr) node.getAttributes().getNamedItem("type");
                    if (attr != null) {
                        String attribute= attr.getValue();                      
                        System.out.println("attribute: " + attribute);                      
                    }
                }
            }

请帮帮我!!

提前致谢, 瓦沙。

最佳答案

由于您的问题更通用,因此请尝试使用 Java 中可用的 XML 解析器来实现它。如果您需要它特定于解析器,请在此处更新您已尝试过的代码

<?xml version="1.0" encoding="UTF-8"?>
<ep>
    <source type="xml">TEST</source>
    <source type="text"></source>
</ep>
DocumentBuilderFactory domFactory = DocumentBuilderFactory.newInstance();
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document doc = builder.parse("uri to xmlfile");
XPathFactory xPathfactory = XPathFactory.newInstance();
XPath xpath = xPathfactory.newXPath();
XPathExpression expr = xpath.compile("//ep/source[@type]");
NodeList nl = (NodeList) expr.evaluate(doc, XPathConstants.NODESET);

for (int i = 0; i < nl.getLength(); i++)
{
    Node currentItem = nl.item(i);
    String key = currentItem.getAttributes().getNamedItem("type").getNodeValue();
    System.out.println(key);
}

关于java - 如何使用java获取xml节点的属性值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11863038/

相关文章:

Python xml ElementTree : find values of only first 3 elements with same name

c# - 如何使用 C# 动态更改 XML 节点的属性

asp.net - 避免为每个转发器重新加载所有 XML 数据 - vb.net

java - Java 枚举中的实例

c# - 获取 Xml 属性

python - 如何使用 lxml 更新 XML 文件

c# - C#修改XML已有内容

java - 让 Grails 监听外部 IP 地址

java - 按边标签对顶点组的传入顶点进行分组

java - 关于Spring MVC中请求映射的一些疑惑