从Java中提取XML数据的最简单方法是什么? XML数据始终采用以下形式:
<?xml version=\"1.0\" encoding=\"UTF-8\"?>
<groups>GROUPNAME</groups>
我想要做的就是在字符串中捕获组名。 我尝试过使用正则表达式,但我很难编写模式代码:
String xmlline = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<groups>XWiki.G_SW_DEV</groups>";
String pattern = "";
Pattern r = Pattern.compile(pattern);
Matcher m = r.matcher(xmlline);
if(m.find()){
....
}
如下所述: http://www.tutorialspoint.com/java/java_regular_expressions.htm
关于模式代码的任何建议还是有更好的方法来提取XML数据?
答案 0 :(得分:1)
经典建议:不要使用正则表达式。开始时似乎很容易,但这并不容易。
并且有很多用于XML的经典库,它们做得很好!
看到这个: Java:XML Parser
然后,你只需要这样做来检索元素:
doc.getElementsByTagName("groups")
,等等
doc.getElementsByTagName("method").item(0).getTextContent()
答案 1 :(得分:0)
使用JAXB编组
示例:如果要读取customer.xml
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<customer id="100">
<age>29</age>
<name>Martin</name>
</customer>
步骤1:将xml映射到类文件
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;
@XmlRootElement
public class Customer {
String name;
int age;
int id;
public String getName() {
return name;
}
@XmlElement
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
@XmlElement
public void setAge(int age) {
this.age = age;
}
public int getId() {
return id;
}
@XmlAttribute
public void setId(int id) {
this.id = id;
}
}
Step 2: Write a reader class
import java.io.File;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Unmarshaller;
public class ReadXml {
public static void main(String[] args) throws JAXBException {
File file = new File("D:\\customer.xml");
JAXBContext jaxbContext = JAXBContext.newInstance(Customer.class);
Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
Customer customer = (Customer) jaxbUnmarshaller.unmarshal(file);
System.out.println("Name :" + customer.getName());
System.out.println("Age :" + customer.getAge());
System.out.println("Id :" + customer.getId());
}
}
output:
Name :Martin
Age :29
Id :100
答案 2 :(得分:0)
在Java生态系统中存在三种不同的xml-parser方法。其中两个是基于流的,与事件一起工作。第三个使用文档的树模型(DOM->文档对象模型)。 流模型适用于大型文档,而DOM解析器通常被认为更容易/更好地编程。
流/事件:
另请参阅:this question
DOM:
答案 3 :(得分:-3)
了解JRXML以从XML文件中检索数据。这是在java中使用的最好的东西。否则,如果你不使用它,就有很多鱼可以炒。