从java中的XML读取
read from XML in java
我正试图通过这段代码从xml中读取,但它不起作用。。我需要读取特定标记(getelementbyid)中的id我需要在我的java代码中更改什么
这是我的xml代码
<book>
<person>
<name>
<first id=1 name="Kiran"/>
<first id=2 name="Pai"/>
</name>
<age>22</age>
</person>
<person>
<name>
<first id=1 name="Bill"/>
<first id=2 name="Gates"/>
</name>
<age>46</age>
</person>
<person>
<name>
<first id=1 name="Steve"/>
<first id=2 name="Jobs"/>
</name>
<age>40</age>
</person>
</book>
这是我的java代码
import java.io.File;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
public class XMLReader {
public static void main(String argv[]) {
try {
File file = new File("c:''MyXMLFile.xml");
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse(file);
doc.getDocumentElement().normalize();
System.out.println("Root element " + doc.getDocumentElement().getNodeName());
NodeList nodeLst = doc.getElementsByTagName("employee");
System.out.println("Information of all employees");
for (int s = 0; s < nodeLst.getLength(); s++) {
Node fstNode = nodeLst.item(s);
if (fstNode.getNodeType() == Node.ELEMENT_NODE) {
Element fstElmnt = (Element) fstNode;
NodeList fstNmElmntLst = fstElmnt.getElementsByTagName("firstname");
Element fstNmElmnt = (Element) fstNmElmntLst.item(0);
NodeList fstNm = fstNmElmnt.getChildNodes();
System.out.println("First Name : " + ((Node) fstNm.item(0)).getNodeValue());
NodeList lstNmElmntLst = fstElmnt.getElementsByTagName("lastname");
Element lstNmElmnt = (Element) lstNmElmntLst.item(0);
NodeList lstNm = lstNmElmnt.getChildNodes();
System.out.println("Last Name : " + ((Node) lstNm.item(0)).getNodeValue());
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
您可以了解JAXB。它是JavaSE的一部分。您只需要将XML模式映射到几个POJO类,并用JAXB注释来描述它们。
将XML映射到对象(反之亦然)的可能代码大约需要5行。
你可以在这里阅读:http://docs.oracle.com/javase/tutorial/jaxb/intro/
这应该有效:
public class XMLReader {
public static void main(String argv[]) {
try {
File file = new File("c:''MyXMLFile.xml");
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse(file);
doc.getDocumentElement().normalize();
System.out.println("Root element " + doc.getDocumentElement().getNodeName());
NodeList nodeLst = doc.getElementsByTagName("name");
System.out.println("Information of all employees");
for (int s = 0; s < nodeLst.getLength(); s++) {
Node fstNode = nodeLst.item(s);
if (fstNode.getNodeType() == Node.ELEMENT_NODE) {
Element fstElmnt = (Element) fstNode;
NodeList fstNmElmntLst = fstElmnt.getElementsByTagName("first");
Element fstNmElmnt = (Element) fstNmElmntLst.item(0);
System.out.println("First Name : " +fstNmElmnt.getAttributeNode("name").getNodeValue());
Element lstNmElmnt = (Element) fstNmElmntLst.item(1);
System.out.println("Last Name : " +lstNmElmnt.getAttributeNode("name").getNodeValue());
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
并更正xml以引用属性:
<book>
<person>
<name>
<first id="1" name="Kiran"/>
<first id="2" name="Pai"/>
</name>
<age>22</age>
</person>
<person>
<name>
<first id="1" name="Bill"/>
<first id="2" name="Gates"/>
</name>
<age>46</age>
</person>
<person>
<name>
<first id="1" name="Steve"/>
<first id="2" name="Jobs"/>
</name>
<age>40</age>
</person>
</book>
其中一个问题是内置的Java XML库只是一般的。虽然主要用于HTML,但如果您不使用xpath,JSoup会更容易使用。
String yourXml = ...
Document doc = Jsoup.parse(yourXml, "", Parser.xmlParser());
for (Element person : doc.getElementsByTag("person")) {
String firstName = person.getElementById("1").text();
String lastName = person.getElementById("2").text();
}
相关文章:
- 在一个循环中读取xml文件的所有节点
- 如何用javascript读取xml文件
- dojo/request/iframe中读取xml响应的缺陷
- 读取 xml 文件时出现意外的令牌<
- 从 Chrome 或 IE 中的 Javascript 本地读取 XML 文件;这也应该与安卓手机兼容
- 我如何创建一个读取 xml 或 json 的 Chrome 扩展程序
- 不使用本地/网络服务器读取 xml
- 使用 Jquery 读取 XML 文件,如何将其与服务器发送事件相结合并保持页面最新
- 无法使用 Firefox 以外的 JavaScript 读取 XML 文件
- JavaScript 读取 XML 是完全错误的
- 如何在 JavaScript 中从 FTP 服务器读取 XML
- 如何在 jQuery 中读取 xml 文件内容并在 html 元素中显示
- 从文件服务器读取 XML 文件
- Internet Explorer 11 不会读取 XML 的“getElementById”并返回 null
- 为什么我在 JavaScript 中读取 XML 文件时得到空结果
- 如何使用纯JavaScript离线读取“.XML”文件
- 如何读取xml数据并通过标记将其分离
- 跨域AJAX读取XML
- 如何从一个函数中读取xml,该函数由javascript中的另一个函数加载
- 使用Javascript读取XML文件