apple网站设计,网站建设中主页指的是,经典广告案例,软装设计图一、XML是什么
XML#xff08;可扩展标记语言#xff09;是一种非常常用的数据存储和交换格式。
二、XML 的基本结构
声明 XML 文件通常以 XML 声明开始#xff0c;例如#xff1a;?xml version1.0 encodingUTF-8?。它指定了 XML 的版…一、XML是什么
XML可扩展标记语言是一种非常常用的数据存储和交换格式。
二、XML 的基本结构
声明 XML 文件通常以 XML 声明开始例如?xml version1.0 encodingUTF-8?。它指定了 XML 的版本和编码方式。
元素 XML 由元素组成。一个元素通常由开始标签、内容和结束标签组成。例如booktitleXML 入门/titleauthor某人/author/book。元素可以嵌套形成层次结构。
属性 元素可以有属性属性在开始标签中指定。例如book id123titleXML 进阶/titleauthor另一人/author/book这里的 “id” 就是属性。
三、XML 的语法规则
标签必须正确嵌套不能交叉嵌套。标签必须成对出现有开始标签就必须有结束标签。属性值必须用引号括起来可以是单引号或双引号。XML 是区分大小写的。
四、XML 的用途
数据存储 可以将数据以结构化的方式存储在 XML 文件中。例如存储书籍信息、用户配置等。
数据交换 不同的系统可以使用 XML 作为数据交换的格式因为它是平台无关的。
配置文件 许多软件使用 XML 作为配置文件如服务器配置、应用程序设置等。
五、在 Java 中处理 XML
DOM文档对象模型 DOM 将 XML 文档表示为一个树结构可以通过编程方式遍历和修改这个树。使用步骤 创建一个 DocumentBuilderFactory。使用工厂创建一个 DocumentBuilder。使用 DocumentBuilder 解析 XML 文件得到一个 Document 对象。通过 Document 对象访问和操作 XML 元素和属性。
SAX简单 API for XML SAX 是一种基于事件的解析方式在解析 XML 时当遇到特定的元素、属性等时会触发相应的事件。使用步骤 创建一个 SAXParserFactory。使用工厂创建一个 SAXParser。创建一个自定义的 DefaultHandler 类来处理 SAX 事件。使用 SAXParser 解析 XML 文件并将自定义的 DefaultHandler 作为参数传递。
JAXBJava Architecture for XML Binding JAXB 允许将 Java 对象与 XML 文档相互转换。使用步骤 创建 Java 类并使用 JAXB 注解来指定与 XML 的映射关系。使用 JAXBContext 来进行 Java 对象和 XML 之间的转换操作。
六、XML 的优点和缺点
优点 结构化和自描述性易于理解和阅读。平台无关性可以在不同的操作系统和编程语言中使用。广泛的工具支持有许多库和工具可用于处理 XML。
缺点 相对较冗长文件体积可能较大。解析相对复杂和耗时特别是对于大型 XML 文件。 七、xml和json之间的转换
注意需要添加依赖 dependencygroupIdcom.alibaba/groupIdartifactIdfastjson/artifactIdversion1.2.83/version/dependencydependencygroupIdcom.fasterxml.jackson.dataformat/groupIdartifactIdjackson-dataformat-xml/artifactIdversion2.14.2/version/dependency import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.dataformat.xml.XmlMapper;
import org.json.JSONException;
import org.json.XML;import java.util.Map;public class XmlJsonConverter {// JSON 转 XMLpublic static String jsonToXml(String jsonStr) {try {JSONObject jsonObject JSONObject.parseObject(jsonStr);MapString, Object map jsonObject.toJavaObject(new TypeReferenceMapString, Object() {});return XML.toString(map);} catch (JSONException e) {e.printStackTrace();return null;}}// XML 转 JSONpublic static String xmlToJson(String xmlStr) {try {XmlMapper xmlMapper new XmlMapper();JsonNode jsonNode xmlMapper.readTree(xmlStr);ObjectMapper objectMapper new ObjectMapper();return objectMapper.writeValueAsString(jsonNode);} catch (Exception e) {e.printStackTrace();return null;}}
}
调用小工具
public class Main {public static void main(String[] args) {String json {\name\:\John\,\age\:30,\address\:{\city\:\New York\,\street\:\Main Street\}};String xml XmlJsonConverter.jsonToXml(json);if (xml! null) {System.out.println(JSON to XML:);System.out.println(xml);}String xmlStr personnameJane/nameage28/ageaddresscityLondon/citystreetOxford Street/street/address/person;String jsonFromXml XmlJsonConverter.xmlToJson(xmlStr);if (jsonFromXml! null) {System.out.println(XML to JSON:);System.out.println(jsonFromXml);}}
} 八、xml和对象之间的转换
将 Java 对象转换为 XML 字符串以及将 XML 字符串转换回 Java 对象的方法。
注意要转换的 Java 对象类需要使用 JAXB 注解进行适当的标注如XmlRootElement等。
同时确保在项目中添加 JAXB 相关的依赖。
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller;
import java.io.StringReader;
import java.io.StringWriter;public class XmlObjectConverter {// 对象转 XMLpublic static String objectToXml(Object obj) {try {JAXBContext context JAXBContext.newInstance(obj.getClass());Marshaller marshaller context.createMarshaller();marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);StringWriter writer new StringWriter();marshaller.marshal(obj, writer);return writer.toString();} catch (JAXBException e) {e.printStackTrace();return null;}}// XML 转对象public static T T xmlToObject(String xml, ClassT clazz) {try {JAXBContext context JAXBContext.newInstance(clazz);Unmarshaller unmarshaller context.createUnmarshaller();StringReader reader new StringReader(xml);return (T) unmarshaller.unmarshal(reader);} catch (JAXBException e) {e.printStackTrace();return null;}}
} 新建一个java对象
import javax.xml.bind.annotation.XmlRootElement;XmlRootElement
class Person {private String name;private 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;}
}
使用工具
public class Main {public static void main(String[] args) {Person person new Person(Alice, 25);String xml XmlObjectConverter.objectToXml(person);if (xml! null) {System.out.println(Object to XML:);System.out.println(xml);}String xmlStr personnameBob/nameage30/age/person;Person personFromXml XmlObjectConverter.xmlToObject(xmlStr, Person.class);if (personFromXml! null) {System.out.println(XML to Object:);System.out.println(Name: personFromXml.getName() , Age: personFromXml.getAge());}}
}