Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/399.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.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,为了访问值id1和id2,我迭代XML中的每个值,如果我找到一个名为id1或id2的标记,我将其值读入一个变量。是否有更好的方法读取值id1和id2 1. 测验 id1 id2 瓦尔2 瓦尔1 如果使用XPath,可以直接从文档对象提取值。在您的情况下,到达id1的XPath将是/begin/id1如果使用XPath,可以直接从文档对象提取值。在您的例子中,到达id1的XPath将是/begin/id1我将使用任何支持XPath的库。是目前我最喜欢的,但是还有很多。我会使用任何支持XPath的

为了访问值id1和id2,我迭代XML中的每个值,如果我找到一个名为id1或id2的标记,我将其值读入一个变量。是否有更好的方法读取值id1和id2


1.
测验
id1
id2
瓦尔2
瓦尔1

如果使用XPath,可以直接从文档对象提取值。在您的情况下,到达
id1
的XPath将是
/begin/id1
如果使用XPath,可以直接从文档对象提取值。在您的例子中,到达
id1
的XPath将是
/begin/id1

我将使用任何支持XPath的库。是目前我最喜欢的,但是还有很多。

我会使用任何支持XPath的库。是我目前最喜欢的,但是还有很多。

您可以使用。这是在Java中处理XML的一种非常健壮的方法。

您可以使用。这是在Java中处理XML的一种非常健壮的方法。

使用SAX解析器,将“id1”开始元素后发出的文本存储为id1值,将“id2”开始元素后发出的文本存储为id2值

例如:

publicstaticlist getid(InputStream xmlStream)抛出ParserConfigurationException、SAXException、IOException{
最终列表ID=新的ArrayList();
SAXParserFactory=SAXParserFactory.newInstance();
SAXParser SAXParser=factory.newSAXParser();
parse(xmlStream,新的DefaultHandler()){
布尔getChars=false;
public void startElement(字符串uri、字符串名称、字符串qName、属性属性属性)引发SAXException{
如果(“id1.equalsIgnoreCase(qName))getChars=true;
如果(“id2.equalsIgnoreCase(qName))getChars=true;
}
公共无效字符(char cs[],int start,int len)引发异常{
if(getChars){
add(新字符串(cs,start,len));
getChars=false;
}
}
});
返回ID;
}

使用SAX解析器,将“id1”开始元素之后发出的文本存储为id1值,“id2”开始元素之后的文本存储为id2值

例如:

publicstaticlist getid(InputStream xmlStream)抛出ParserConfigurationException、SAXException、IOException{
最终列表ID=新的ArrayList();
SAXParserFactory=SAXParserFactory.newInstance();
SAXParser SAXParser=factory.newSAXParser();
parse(xmlStream,新的DefaultHandler()){
布尔getChars=false;
public void startElement(字符串uri、字符串名称、字符串qName、属性属性属性)引发SAXException{
如果(“id1.equalsIgnoreCase(qName))getChars=true;
如果(“id2.equalsIgnoreCase(qName))getChars=true;
}
公共无效字符(char cs[],int start,int len)引发异常{
if(getChars){
add(新字符串(cs,start,len));
getChars=false;
}
}
});
返回ID;
}

您可以使用JDOM执行此操作:

import org.jdom.Document;
import org.jdom.input.SAXBuilder;

public class Test {

    public static void main(String[] args) throws Exception{
        SAXBuilder builder = new SAXBuilder();
        Document doc = builder.build("test.xml");
        String id1 = doc.getRootElement().getChild("values").getChild("factor").getChild("id1").getValue();
        System.out.println(id1);
        String id2 = doc.getRootElement().getChild("values").getChild("factor").getChild("id2").getValue();
        System.out.println(id2);
    }

}

您可以使用JDOM执行此操作:

import org.jdom.Document;
import org.jdom.input.SAXBuilder;

public class Test {

    public static void main(String[] args) throws Exception{
        SAXBuilder builder = new SAXBuilder();
        Document doc = builder.build("test.xml");
        String id1 = doc.getRootElement().getChild("values").getChild("factor").getChild("id1").getValue();
        System.out.println(id1);
        String id2 = doc.getRootElement().getChild("values").getChild("factor").getChild("id2").getValue();
        System.out.println(id2);
    }

}

如果您感兴趣的是查询某些元素,那么您的朋友是吗如果您感兴趣的是查询某些元素,那么您的朋友是吗