[英]read xml file in the java
我想從xml讀取數據,但出現錯誤:
節點無法轉換為元素
問題是什么? 這是完整的代碼:
public class ReadXML {
public static void main(String[] args) throws Exception{
File xmlFile = new File("C:\\XML\\data.xml");
DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();
org.w3c.dom.Document document = documentBuilder.parse(xmlFile);
NodeList list = document.getElementsByTagName("Developer");
for (int i = 0; i < list.getLength(); i++) {
Node node = list.item(i);
if (node.getNodeType() == Node.ELEMENT_NODE) {
Element element = (Element) node;
System.out.println("ID: " + element.getAttribute("ID"));
System.out.println("Name: " + element.getElementsByTagName("Name").item(0).getTextConcent());
System.out.println("Surname: " + element.getElementsByTagName("Surname").item(0).getTextConcent());
System.out.println("Age: " + element.getElementsByTagName("Age").item(0).getTextConcent());
}
}
}
}
xml文件:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<Developer Id="1">
<Name>Sahil</Name>
<Surname>Huseynzade</Surname>
<Age>21</Age>
</Developer>
如果使用以下導入,則可以使用:
import java.io.File;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
同樣,將.getTextConcent()
替換為.getTextContent()
。
另外,如果id屬性拼寫為Id
那么您需要將其請求為-而不是ID
。 區分大小寫。
編輯:如果要從XML讀取一組開發人員,請執行以下操作:
假設您有以下數據文件:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<Developers>
<Developer Id="1">
<Name>Sahil</Name>
<Surname>Huseynzade</Surname>
<Age>21</Age>
</Developer>
<Developer Id="2">
<Name>Bob</Name>
<Surname>Nobody</Surname>
<Age>20</Age>
</Developer>
<Developer Id="3">
<Name>Joe</Name>
<Surname>Bloggs</Surname>
<Age>19</Age>
</Developer>
</Developers>
這是Developer類:
public class Developer {
private String id;
private String name;
private String surname;
private int age;
public Developer(String id, String name, String surname, int age) {
this.id = id;
this.name = name;
this.surname = surname;
this.age = age;
}
public String getId() {
return id;
}
public String getName() {
return name;
}
public String getSurname() {
return surname;
}
public int getAge() {
return age;
}
}
這是讀取它的方法:
public static void main(String[] args) throws Exception {
File xmlFile = new File("data.xml");
DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();
org.w3c.dom.Document document = documentBuilder.parse(xmlFile);
NodeList list = document.getElementsByTagName("Developer");
List<Developer> developers = new ArrayList<>();
for (int i = 0; i < list.getLength(); i++) {
Node node = list.item(i);
if (node.getNodeType() == Node.ELEMENT_NODE) {
Element element = (Element) node;
Developer developer = new Developer(
element.getAttribute("Id"),
element.getElementsByTagName("Name").item(0).getTextContent(),
element.getElementsByTagName("Surname").item(0).getTextContent(),
Integer.parseInt(element.getElementsByTagName("Age").item(0).getTextContent())
);
developers.add(developer);
}
}
// at this point we have a list of developers
// print out all the developers
for (Developer developer : developers) {
System.out.println("ID: " + developer.getId());
System.out.println("Name: " + developer.getName());
System.out.println("Surname: " + developer.getSurname());
System.out.println("Age: " + developer.getAge());
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.