Java 从 XML 中解析一行的简单方法
Java Simple way to parse a line out of XML
我一直在努力弄清楚如何解析 XML 文件,但是每篇文章看起来都非常混乱。
她就是我的样子
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<root-config>
<session timeout="100" warning="30"/>
</root-config>
在我的 XML 文件中,我只是检查是否存在以下节点名称 - session。如果会话存在,我想获取属性超时和警告。
在 java 中是否有一种无需创建大量代码即可执行此操作的简单方法?
也许你可以使用jaxb?这是一个很好的简单示例,可以执行 xml 解组
如果会话存在我会给你属性超时和警告。
File fXmlFile = new File("D:/yourxmlfilename.xml");
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(fXmlFile);
doc.getDocumentElement().normalize();
System.out.println("Root element :" + doc.getDocumentElement().getNodeName());
NodeList nList = doc.getElementsByTagName("root-config");
System.out.println("----------------------------");
for (int temp = 0; temp < nList.getLength(); temp++) {
Node nNode = nList.item(temp);
System.out.println("\nCurrent Element :" + nNode.getNodeName());
if(nNode.getNodeName().equals("session") ){
// It will displays that session is present
Element eElement = (Element) nNode;
System.out.println("Item No : " + eElement.getElementsByTagName("timeout").item(0).getTextContent());
System.out.println("Description : " + eElement.getElementsByTagName("warning").item(0).getTextContent());
}
}
看看Document Object Model (DOM) API, specifically how to load an XML tree and read data from it。
这是一个如何从示例 XML 文档中检索信息的示例:
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
...
DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();
Document document = documentBuilder.parse(new File("input.xml"));
NodeList sessionNodelist = document.getElementsByTagName("session");
if(sessionNodelist.getLength() > 0) {
Element sessionElement = (Element) sessionNodelist.item(0);
String timeout = sessionElement.getAttribute("timeout");
String warning = sessionElement.getAttribute("warning");
...
}
前三行创建一个解析输入文件的工厂对象实例,XML 树被加载到内存中。
剩下的代码通过获取 session
个节点的列表来遍历文档的树。如果存在,则从 session
元素中检索属性 timeout
和 warning
。请注意,将 sessionElement
显式转换为 Element
类型,因为我们知道 XML 节点的类型是一个元素(Node
是一个表示多个元素的接口XML 节点类型,例如元素和属性)。
使用JDOM library代码很简单:
SAXBuilder builder = new SAXBuilder();
Document document = (Document) builder.build(new File("c:\file.xml"));
Element rootNode = document.getRootElement();
Element eSession = rootNode.getChild("session");
// Use eSession
eSession.getAttributeValue("timeout");
我一直在努力弄清楚如何解析 XML 文件,但是每篇文章看起来都非常混乱。
她就是我的样子
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<root-config>
<session timeout="100" warning="30"/>
</root-config>
在我的 XML 文件中,我只是检查是否存在以下节点名称 - session。如果会话存在,我想获取属性超时和警告。
在 java 中是否有一种无需创建大量代码即可执行此操作的简单方法?
也许你可以使用jaxb?这是一个很好的简单示例,可以执行 xml 解组
如果会话存在我会给你属性超时和警告。
File fXmlFile = new File("D:/yourxmlfilename.xml");
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(fXmlFile);
doc.getDocumentElement().normalize();
System.out.println("Root element :" + doc.getDocumentElement().getNodeName());
NodeList nList = doc.getElementsByTagName("root-config");
System.out.println("----------------------------");
for (int temp = 0; temp < nList.getLength(); temp++) {
Node nNode = nList.item(temp);
System.out.println("\nCurrent Element :" + nNode.getNodeName());
if(nNode.getNodeName().equals("session") ){
// It will displays that session is present
Element eElement = (Element) nNode;
System.out.println("Item No : " + eElement.getElementsByTagName("timeout").item(0).getTextContent());
System.out.println("Description : " + eElement.getElementsByTagName("warning").item(0).getTextContent());
}
}
看看Document Object Model (DOM) API, specifically how to load an XML tree and read data from it。
这是一个如何从示例 XML 文档中检索信息的示例:
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
...
DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();
Document document = documentBuilder.parse(new File("input.xml"));
NodeList sessionNodelist = document.getElementsByTagName("session");
if(sessionNodelist.getLength() > 0) {
Element sessionElement = (Element) sessionNodelist.item(0);
String timeout = sessionElement.getAttribute("timeout");
String warning = sessionElement.getAttribute("warning");
...
}
前三行创建一个解析输入文件的工厂对象实例,XML 树被加载到内存中。
剩下的代码通过获取 session
个节点的列表来遍历文档的树。如果存在,则从 session
元素中检索属性 timeout
和 warning
。请注意,将 sessionElement
显式转换为 Element
类型,因为我们知道 XML 节点的类型是一个元素(Node
是一个表示多个元素的接口XML 节点类型,例如元素和属性)。
使用JDOM library代码很简单:
SAXBuilder builder = new SAXBuilder();
Document document = (Document) builder.build(new File("c:\file.xml"));
Element rootNode = document.getRootElement();
Element eSession = rootNode.getChild("session");
// Use eSession
eSession.getAttributeValue("timeout");