Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.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_Xml Parsing - Fatal编程技术网

Java 如何检索/提取XML元素属性值

Java 如何检索/提取XML元素属性值,java,xml,xml-parsing,Java,Xml,Xml Parsing,我有一个如下所示的XML <?xml version="1.0" encoding="utf-8"?> <PaymentElement> <Payment seqID="3"> <TPayment> <Status>status</Status> </TPayment> </Payment

我有一个如下所示的XML

<?xml version="1.0" encoding="utf-8"?>
    <PaymentElement>
        <Payment seqID="3">
            <TPayment>
                <Status>status</Status>
            </TPayment>
        </Payment>
    </PaymentElement>

地位
问题是如何通过java检索/提取seqID值,该值是其中的3

我试过下面的方法,但不起作用

InputStream xml = conn.getInputStream(); 
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse(xml);
NodeList list = doc.getElementsByTagName("PaymentElement");

for(int i=0; i<=list.getLength();i++){
    NodeList paySeq=doc.getElementsByTagName("Payment seqID");
System.out.println("Payment seqID"+paySeq);
}
InputStream xml=conn.getInputStream();
DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance();
DocumentBuilder db=dbf.newDocumentBuilder();
Document doc=db.parse(xml);
NodeList list=doc.getElementsByTagName(“PaymentElement”);
对于(int i=0;i
result
现在应该有
3

完整示例

import java.io.*;
import javax.xml.xpath.*;
import org.xml.sax.InputSource;

public class Demo {

    public static void main(String[] args) throws Exception {
        InputStream inputStream = new FileInputStream("sample.xml");
        InputSource inputSource = new InputSource(inputStream);
        XPath xpath = XPathFactory.newInstance().newXPath();
        XPathExpression expr = xpath.compile("/PaymentElement/Payment/@seqID");
        Object result = expr.evaluate(inputSource, XPathConstants.STRING);
        System.out.println(result);
    }

}
试一试

输出

 Payment seqID = 3

结果为空值3未出现公共静态void main(字符串[]args)引发异常{InputStream xml=new FileInputStream(“sample.xml”);DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance();DocumentBuilder db=dbf.newDocumentBuilder();Document doc=db.parse(xml);XPath XPath=XPathFactory.newInstance().newXPath();XPathExpression expr=XPath.compile(“/PaymentElement/Payment/@seqID”);对象结果=expr.evaluate(doc,XPathConstants.STRING);系统.out.println(result);}@RKajaMohideen-+1,我还在您的答案中添加了您的评论的修改版本。我所做的更改是取消对DOM的转换。@BlaiseDoughan,这很好。我只是为他试图解决的问题提供了解决方案。我没有集中精力在DOM部分:-)我在答案中复制粘贴了完整版本,请重试
    DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
    DocumentBuilder db = dbf.newDocumentBuilder();
    Document doc = db.parse(new File("1.xml"));
    Element e  = (Element)doc.getDocumentElement().getElementsByTagName("Payment").item(0);
    String id = e.getAttribute("seqID");
    System.out.println("Payment seqID = " + id);
 Payment seqID = 3