Dom解析的文章已经烂大街了。在这里,只举三个场景下如何编码的例子:
详细的讲解看官请自行百度。
dom4j包下载链接为:点击下载dom4j
xml实例
<model name="model" > <Operator name="kafkaInput"> <parameter name="inputTopicName" value="department1_tn1" /> </operator> <operator name="addFielduuid"> <parameter name="parameter1" value="p1" /> </operator> <operator name="kafkaOutput"> <parameter name="outTopicName" value="department1_tn1" /> </operator> <connect from="kafkaInput.outport1" to="addFielduuid.inport1" /> <connect from="addFielduuid.outport1" to="kafkaOutput.inport1" /> <ouput path="/home" /></model>
获取这三个节点的代码为:
public static void parsingSameNameNode(String xmlPath) {File file = new File(argsPath);// 创建saxReader对象SAXReader reader = new SAXReader();// 通过read方法读取一个文件 转换成Document对象Document document;try { document = reader.read(file); List<Element> operators = document.selectNodes("/model/operator"); for(Element operator:operators){ //do something... }} catch (DocumentException e) { e.PRintStackTrace();}}
注意解析前读取xml内容、构建Document实例的代码:
File file = new File(argsPath);// 创建saxReader对象SAXReader reader = new SAXReader();// 通过read方法读取一个文件 转换成Document对象Document document;try {document = reader.read(file);//do something...} catch (DocumentException e) {e.printStackTrace();}
转换代码如下:
// 获取根节点元素对象Element rootNode = document.getRootElement();// 获取context节点所有文字内容String context = rootNode.element("context").asXML();
例上面xml中,output节点的path属性值修改为:/home/BYRans,代码如下:
Element rootNode = document.getRootElement();Element node = rootNode.element("/model/output")Attribute path = node.attribute("path");path.setValue("/home/BYRans");
例上面xml中,output节点的path属性值修改为:/home/BYRans,代码如下:
Element rootNode = document.getRootElement();Element node = rootNode.element("/model/output")node.setAttributeValue("path","/home/BYRans");
新闻热点
疑难解答