Java解析Xml文件举例

准备好一个XML文件例如:

<?xml version="1.0" encoding="UTF-8" ?>
<persons>
    <person>
      <name>lyg</name>
      <age>100</age>
   </person>
   <person>
      <name>zx</name>
      <age>99</age>
   </person>
   <person>
      <name>ceshi</name>
      <age>23</age>
   </person>
</persons>

解析代码:

import java.util.ArrayList;
import java.util.List;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;

/**
 * 
 * @author lyg
 *
 */
public class 测试2XML解析 {
   public static void main(String[] args) throws Exception {
      //SAX解析
      //1、获取解析工厂
      SAXParserFactory factory=SAXParserFactory.newInstance();
      //2、从上一步解析工厂获取解析器
      SAXParser parse =factory.newSAXParser();
      //3、处理器
      //4、加载文档 Document 并注册处理器
      Phandler handler = new Phandler();
      //5.解析
      parse.parse(Thread.currentThread().getContextClassLoader()
            .getResourceAsStream("你的xml文件所在.xml"),handler);
      //6.获取数据,打印出来
      List<Person> persons = handler.getPersons();
      for (Person person : persons) {
         System.out.println(person.getName() + "--->" + person.getAge());
      }
   }
}

class Phandler extends DefaultHandler{
   private List<Person> persons;//存储person信息
   private Person person;
   private String tag;//存储操作的标签
   
   public List<Person> getPersons() {
      return persons;
   }

   public Person getPerson() {
      return person;
   }

   public String getTag() {
      return tag;
   }

   @Override
   public void startDocument() throws SAXException {
      System.out.println("---解析文档开始---");
      persons = new ArrayList<Person>();
   }
   
   @Override
   public void startElement(String uri, String localName, String qName, Attributes attributes) 
         throws SAXException {
      System.out.println(qName + "解析开始");
      if(null != qName) {
         tag = qName;
         if(tag.equals("person")) {
            person = new Person();
         }
      }
      
   }
   
   @Override
   public void characters(char[] ch, int start, int length) throws SAXException {
      String content = new String(ch,start,length).trim();
      if(null != tag) {
         if(tag.equals("name")) {
            person.setName(content);
         }else if(tag.equals("age")) {
            if(content.length() > 0) {
               person.setAge(Integer.valueOf(content));
            }
         }
      }
   }
   
   @Override
   public void endElement(String uri, String localName, String qName) throws SAXException {
      System.out.println(qName + "解析结束");
      tag = qName;
      if(null != tag) {
         if(tag.equals("person")) {
            persons.add(person);
         }
      }
      tag = null;
   }
   
   @Override
   public void endDocument() throws SAXException {
      System.out.println("---解析文档结束---");
   }
}

//
class Person{
   String name;
   int age;
   public Person() {
   }
   public Person(String name, int age) {
      this.name = name;
      this.age = age;
   }
   public String getName() {
      return name;
   }
   public void setName(String name) {
      this.name = name;
   }
   public int getAge() {
      return age;
   }
   public void setAge(int age) {
      this.age = age;
   }
   
}

执行结果:

---解析文档开始---
persons解析开始
person解析开始
name解析开始
name解析结束
age解析开始
age解析结束
person解析结束
person解析开始
name解析开始
name解析结束
age解析开始
age解析结束
person解析结束
person解析开始
name解析开始
name解析结束
age解析开始
age解析结束
person解析结束
persons解析结束
---解析文档结束---
lyg--->100
zx--->99
ceshi--->23

Java中有很多库可以用来解析Markdown,其中比较流行的有CommonMark、Pegdown、Flexmark等。 以Flexmark为例,可以按照以下步骤来解析Markdown: 1. 引入Flexmark库的依赖,例如在Maven项目中可以在pom.xml文件中添加以下代码: ``` <dependency> <groupId>com.vladsch.flexmark</groupId> <artifactId>flexmark-all</artifactId> <version>0.36.8</version> </dependency> ``` 2. 编写Java代码来解析Markdown,例如: ``` import com.vladsch.flexmark.util.ast.Node; import com.vladsch.flexmark.parser.Parser; import com.vladsch.flexmark.html.HtmlRenderer; public class MarkdownParser { public static String parse(String markdown) { Parser parser = Parser.builder().build(); Node document = parser.parse(markdown); HtmlRenderer renderer = HtmlRenderer.builder().build(); return renderer.render(document); } } ``` 在上面的代码中,我们首先创建了一个Parser对象来解析Markdown文本,然后将解析得到的Node对象传递给HtmlRenderer对象来渲染成HTML格式的字符串。最终返回的就是解析后的HTML字符串。 3. 调用MarkdownParser类的parse方法来解析Markdown,例如: ``` String markdown = "## Hello, world!\n\nThis is a **Markdown** document."; String html = MarkdownParser.parse(markdown); System.out.println(html); ``` 运行上面的代码,输出的结果应该是: ``` <h2>Hello, world!</h2> <p>This is a <strong>Markdown</strong> document.</p> ``` 这就是将Markdown解析成HTML的过程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值