Package org.miaixz.bus.core.xyz
Class XmlKit
java.lang.Object
org.miaixz.bus.core.xyz.XmlKit
XML工具类
此工具使用w3c dom工具,不需要依赖第三方包。
工具类封装了XML文档的创建、读取、写出和部分XML操作
- Since:
- Java 17+
- Author:
- Kimi Liu
-
Field Summary
Fields -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic void追加数据子节点,可以是Map、集合、文本static ElementappendChild(Node node, String tagName) 在已有节点上创建子节点static ElementappendChild(Node node, String tagName, String namespace) 在已有节点上创建子节点static NodeappendText(Node node, CharSequence text) 创建文本子节点static Document将Bean转换为XMLstatic Document将Bean转换为XMLstatic Document将Bean转换为XMLstatic StringcleanComment(String xmlContent) 去除XML文本中的注释内容static StringcleanInvalid(String xmlContent) 去除XML文本中的无效字符static Document创建XML文档 创建的XML默认是utf8编码,修改编码的过程是在toStr和toFile方法里,即XML在转为文本的时候才定义编码static Document创建XML文档 创建的XML默认是utf8编码,修改编码的过程是在toStr和toFile方法里,即XML在转为文本的时候才定义编码static Document创建XML文档 创建的XML默认是utf8编码,修改编码的过程是在toStr和toFile方法里,即XML在转为文本的时候才定义编码static StringelementText(Element element, String tagName) 根据节点名获得第一个子节点static StringelementText(Element element, String tagName, String defaultValue) 根据节点名获得第一个子节点static String格式化XML输出static String格式化XML输出static ElementgetElement(Element element, String tagName) 根据节点名获得第一个子节点getElements(Element element, String tagName) 根据节点名获得子节点列表static DocumentgetOwnerDocument(Node node) 获取节点所在的Documentstatic ElementgetRootElement(Document doc) 获得XML文档根节点static boolean给定节点是否为Element类型节点static Document将Map转换为XMLstatic Document将Map转换为XMLstatic StringmapToXmlString(Map<?, ?> data) 将Map转换为XML格式的字符串static StringmapToXmlString(Map<?, ?> data, boolean omitXmlDeclaration) 将Map转换为XML格式的字符串 当omitXmlDeclaration为true时,表示忽略xml Declaration,即static StringmapToXmlString(Map<?, ?> data, String rootName) 将Map转换为XML格式的字符串static StringmapToXmlString(Map<?, ?> data, String rootName, String namespace) 将Map转换为XML格式的字符串static StringmapToXmlString(Map<?, ?> data, String rootName, String namespace, boolean omitXmlDeclaration) 将Map转换为XML格式的字符串 当omitXmlDeclaration为true时,表示忽略xml Declaration,即删掉static StringmapToXmlString(Map<?, ?> data, String rootName, String namespace, boolean isPretty, boolean omitXmlDeclaration) 将Map转换为XML格式的字符串 当omitXmlDeclaration为true时,表示忽略xml Declaration,即删掉static StringmapToXmlString(Map<?, ?> data, String rootName, String namespace, Charset charset, boolean isPretty, boolean omitXmlDeclaration) 将Map转换为XML格式的字符串 当omitXmlDeclaration为true时,表示忽略xml Declaration,即删掉static Document将String类型的XML转换为XML文档static voidreadBySax(File file, ContentHandler contentHandler) 使用Sax方式读取指定的XML 如果用户传入的contentHandler为DefaultHandler,则其接口都会被处理static voidreadBySax(InputStream source, ContentHandler contentHandler) 使用Sax方式读取指定的XML 如果用户传入的contentHandler为DefaultHandler,则其接口都会被处理static voidreadBySax(Reader reader, ContentHandler contentHandler) 使用Sax方式读取指定的XML 如果用户传入的contentHandler为DefaultHandler,则其接口都会被处理static voidreadBySax(InputSource source, ContentHandler contentHandler) 使用Sax方式读取指定的XML 如果用户传入的contentHandler为DefaultHandler,则其接口都会被处理static Document读取解析XML文件static DocumentreadXml(InputStream inputStream) 读取解析XML文件 编码在XML中定义static Document读取解析XML文件static Document读取解析XML文件 如果给定内容以“<”开头,表示这是一个XML内容,直接读取,否则按照路径处理 路径可以为相对路径,也可以是绝对路径,相对路径相对于ClassPathstatic DocumentreadXml(InputSource source, boolean namespaceAware) 读取解析XML文件 编码在XML中定义static String将XML文档转换为String 字符编码使用XML文档中的编码,获取不到则使用UTF-8 默认非格式化输出,若想格式化请使用format(Document)static String将XML文档转换为String 字符编码使用XML文档中的编码,获取不到则使用UTF-8static String将XML文档转换为String 字符编码使用XML文档中的编码,获取不到则使用UTF-8static String将XML文档转换为String 字符编码使用XML文档中的编码,获取不到则使用UTF-8 当omitXmlDeclaration为true时,表示忽略xml Declaration,即删掉transElements(Element parentEle, NodeList nodeList) 将NodeList转换为Element列表 非Element节点将被忽略transElements(NodeList nodeList) 将NodeList转换为Element列表static void将XML文档写入到文件 使用Document中的编码static voidwrite(Node node, OutputStream out, Charset charset, int indent) 将XML文档写出static voidwrite(Node node, OutputStream out, Charset charset, int indent, boolean omitXmlDeclaration) 将XML文档写出 当omitXmlDeclaration为true时,表示忽略xml Declaration,即删掉static void将XML文档写出static void将XML文档写出 当omitXmlDeclaration为true时,表示忽略xml Declaration,即删掉static voidwriteObjectAsXml(File dest, Object bean) 将可序列化的对象转换为XML写入文件,已经存在的文件将被覆盖 Writes serializable object to a XML file.static <T> TXML转Java Bean 如果XML根节点只有一个,且节点名和Bean的名称一致,则直接转换子节点XML格式字符串转换为MapXML格式字符串转换为Map 只支持第一级别的XML,不支持多级XMLXML格式字符串转换为MapXML节点转换为Map
-
Field Details
-
INVALID_PATTERN
在XML中无效的字符 正则 -
COMMENT_PATTERN
在XML中注释的内容 正则
-
-
Constructor Details
-
XmlKit
public XmlKit()
-
-
Method Details
-
readXml
读取解析XML文件 如果给定内容以“<”开头,表示这是一个XML内容,直接读取,否则按照路径处理 路径可以为相对路径,也可以是绝对路径,相对路径相对于ClassPath- Parameters:
pathOrContent- 内容或路径- Returns:
- XML文档对象
-
readXml
读取解析XML文件- Parameters:
file- XML文件- Returns:
- XML文档对象
-
readXml
读取解析XML文件 编码在XML中定义- Parameters:
inputStream- XML流- Returns:
- XML文档对象
- Throws:
InternalException- IO异常或转换异常
-
readXml
读取解析XML文件- Parameters:
reader- XML流- Returns:
- XML文档对象
- Throws:
InternalException- IO异常或转换异常
-
readXml
读取解析XML文件 编码在XML中定义- Parameters:
source-InputSourcenamespaceAware- 是否打开命名空间支持- Returns:
- XML文档对象
-
parseXml
将String类型的XML转换为XML文档- Parameters:
xmlStr- XML字符串- Returns:
- XML文档
-
readBySax
使用Sax方式读取指定的XML 如果用户传入的contentHandler为DefaultHandler,则其接口都会被处理- Parameters:
file- XML源文件,使用后自动关闭contentHandler- XML流处理器,用于按照Element处理xml
-
readBySax
使用Sax方式读取指定的XML 如果用户传入的contentHandler为DefaultHandler,则其接口都会被处理- Parameters:
reader- XML源Reader,使用后自动关闭contentHandler- XML流处理器,用于按照Element处理xml
-
readBySax
使用Sax方式读取指定的XML 如果用户传入的contentHandler为DefaultHandler,则其接口都会被处理- Parameters:
source- XML源流,使用后自动关闭contentHandler- XML流处理器,用于按照Element处理xml
-
readBySax
使用Sax方式读取指定的XML 如果用户传入的contentHandler为DefaultHandler,则其接口都会被处理- Parameters:
source- XML源,可以是文件、流、路径等contentHandler- XML流处理器,用于按照Element处理xml
-
toString
将XML文档转换为String 字符编码使用XML文档中的编码,获取不到则使用UTF-8 默认非格式化输出,若想格式化请使用format(Document)- Parameters:
doc- XML文档- Returns:
- XML字符串
-
toString
将XML文档转换为String 字符编码使用XML文档中的编码,获取不到则使用UTF-8- Parameters:
doc- XML文档isPretty- 是否格式化输出- Returns:
- XML字符串
-
toString
将XML文档转换为String 字符编码使用XML文档中的编码,获取不到则使用UTF-8- Parameters:
doc- XML文档charset- 编码isPretty- 是否格式化输出- Returns:
- XML字符串
-
toString
public static String toString(Node doc, Charset charset, boolean isPretty, boolean omitXmlDeclaration) 将XML文档转换为String 字符编码使用XML文档中的编码,获取不到则使用UTF-8 当omitXmlDeclaration为true时,表示忽略xml Declaration,即删掉<?xml version="1.0" encoding="utf-8"?>- Parameters:
doc- XML文档charset- 编码isPretty- 是否格式化输出omitXmlDeclaration- 是否忽略 xml Declaration- Returns:
- XML字符串
-
format
格式化XML输出- Parameters:
doc-DocumentXML文档- Returns:
- 格式化后的XML字符串
-
format
格式化XML输出- Parameters:
xmlStr- XML字符串- Returns:
- 格式化后的XML字符串
-
write
将XML文档写入到文件 使用Document中的编码- Parameters:
doc- XML文档file- 文件charset- 编码
-
write
将XML文档写出- Parameters:
node-NodeXML文档节点或文档本身writer- 写出的Writer,Writer决定了输出XML的编码charset- 编码indent- 格式化输出中缩进量,小于1表示不格式化输出
-
write
public static void write(Node node, Writer writer, Charset charset, int indent, boolean omitXmlDeclaration) 将XML文档写出 当omitXmlDeclaration为true时,表示忽略xml Declaration,即删掉<?xml version="1.0" encoding="utf-8"?>- Parameters:
node-NodeXML文档节点或文档本身writer- 写出的Writer,Writer决定了输出XML的编码charset- 编码indent- 格式化输出中缩进量,小于1表示不格式化输出omitXmlDeclaration- 是否忽略 xml Declaration
-
write
将XML文档写出- Parameters:
node-NodeXML文档节点或文档本身out- 写出的Writer,Writer决定了输出XML的编码charset- 编码indent- 格式化输出中缩进量,小于1表示不格式化输出
-
write
public static void write(Node node, OutputStream out, Charset charset, int indent, boolean omitXmlDeclaration) 将XML文档写出 当omitXmlDeclaration为true时,表示忽略xml Declaration,即删掉<?xml version="1.0" encoding="utf-8"?>- Parameters:
node-NodeXML文档节点或文档本身out- 写出的Writer,Writer决定了输出XML的编码charset- 编码indent- 格式化输出中缩进量,小于1表示不格式化输出omitXmlDeclaration- 是否忽略 xml Declaration
-
createXml
创建XML文档 创建的XML默认是utf8编码,修改编码的过程是在toStr和toFile方法里,即XML在转为文本的时候才定义编码- Returns:
- XML文档
-
createXml
创建XML文档 创建的XML默认是utf8编码,修改编码的过程是在toStr和toFile方法里,即XML在转为文本的时候才定义编码- Parameters:
rootElementName- 根节点名称- Returns:
- XML文档
-
createXml
创建XML文档 创建的XML默认是utf8编码,修改编码的过程是在toStr和toFile方法里,即XML在转为文本的时候才定义编码- Parameters:
rootElementName- 根节点名称namespace- 命名空间,无则传null- Returns:
- XML文档
-
getRootElement
获得XML文档根节点- Parameters:
doc-Document- Returns:
- 根节点
- See Also:
-
getOwnerDocument
获取节点所在的Document- Parameters:
node- 节点- Returns:
Document
-
cleanInvalid
去除XML文本中的无效字符- Parameters:
xmlContent- XML文本- Returns:
- 当传入为null时返回null
-
cleanComment
去除XML文本中的注释内容- Parameters:
xmlContent- XML文本- Returns:
- 当传入为null时返回null
-
getElements
根据节点名获得子节点列表- Parameters:
element- 节点tagName- 节点名,如果节点名为空(null或blank),返回所有子节点- Returns:
- 节点列表
-
getElement
根据节点名获得第一个子节点- Parameters:
element- 节点tagName- 节点名- Returns:
- 节点
-
elementText
根据节点名获得第一个子节点- Parameters:
element- 节点tagName- 节点名- Returns:
- 节点中的值
-
elementText
根据节点名获得第一个子节点- Parameters:
element- 节点tagName- 节点名defaultValue- 默认值- Returns:
- 节点中的值
-
transElements
将NodeList转换为Element列表- Parameters:
nodeList- NodeList- Returns:
- Element列表
-
transElements
将NodeList转换为Element列表 非Element节点将被忽略- Parameters:
parentEle- 父节点,如果指定将返回此节点的所有直接子节点,null返回所有就节点nodeList- NodeList- Returns:
- Element列表
-
writeObjectAsXml
将可序列化的对象转换为XML写入文件,已经存在的文件将被覆盖 Writes serializable object to a XML file. Existing file will be overwritten- Parameters:
dest- 目标文件bean- 对象
-
xmlToBean
XML转Java Bean 如果XML根节点只有一个,且节点名和Bean的名称一致,则直接转换子节点- Type Parameters:
T- bean类型- Parameters:
node- XML节点beanClass- bean类- Returns:
- beans
-
xmlToMap
XML格式字符串转换为Map- Parameters:
xmlStr- XML字符串- Returns:
- XML数据转换后的Map
-
xmlToMap
XML格式字符串转换为Map 只支持第一级别的XML,不支持多级XML- Parameters:
xmlStr- XML字符串result- 结果Map类型- Returns:
- XML数据转换后的Map
-
xmlToMap
XML格式字符串转换为Map- Parameters:
node- XML节点- Returns:
- XML数据转换后的Map
-
xmlToMap
XML节点转换为Map- Parameters:
node- XML节点result- 结果Map类型- Returns:
- XML数据转换后的Map
-
mapToXmlString
将Map转换为XML格式的字符串- Parameters:
data- Map类型数据- Returns:
- XML格式的字符串
-
mapToXmlString
将Map转换为XML格式的字符串 当omitXmlDeclaration为true时,表示忽略xml Declaration,即<?xml version="1.0" encoding="utf-8"?>- Parameters:
data- Map类型数据omitXmlDeclaration- 是否忽略 xml Declaration- Returns:
- XML格式的字符串
-
mapToXmlString
将Map转换为XML格式的字符串- Parameters:
data- Map类型数据rootName- 根节点名- Returns:
- XML格式的字符串
-
mapToXmlString
将Map转换为XML格式的字符串- Parameters:
data- Map类型数据rootName- 根节点名namespace- 命名空间,可以为null- Returns:
- XML格式的字符串
-
mapToXmlString
public static String mapToXmlString(Map<?, ?> data, String rootName, String namespace, boolean omitXmlDeclaration) 将Map转换为XML格式的字符串 当omitXmlDeclaration为true时,表示忽略xml Declaration,即删掉<?xml version="1.0" encoding="utf-8"?>- Parameters:
data- Map类型数据rootName- 根节点名namespace- 命名空间,可以为nullomitXmlDeclaration- 是否忽略 xml Declaration- Returns:
- XML格式的字符串
-
mapToXmlString
public static String mapToXmlString(Map<?, ?> data, String rootName, String namespace, boolean isPretty, boolean omitXmlDeclaration) 将Map转换为XML格式的字符串 当omitXmlDeclaration为true时,表示忽略xml Declaration,即删掉<?xml version="1.0" encoding="utf-8"?>- Parameters:
data- Map类型数据rootName- 根节点名namespace- 命名空间,可以为nullisPretty- 是否格式化输出omitXmlDeclaration- 是否忽略 xml Declaration- Returns:
- XML格式的字符串
-
mapToXmlString
public static String mapToXmlString(Map<?, ?> data, String rootName, String namespace, Charset charset, boolean isPretty, boolean omitXmlDeclaration) 将Map转换为XML格式的字符串 当omitXmlDeclaration为true时,表示忽略xml Declaration,即删掉<?xml version="1.0" encoding="utf-8"?>- Parameters:
data- Map类型数据rootName- 根节点名namespace- 命名空间,可以为nullcharset- 编码isPretty- 是否格式化输出omitXmlDeclaration- 是否忽略 xml Declaration- Returns:
- XML格式的字符串
-
mapToXml
将Map转换为XML- Parameters:
data- Map类型数据rootName- 根节点名- Returns:
- XML
-
mapToXml
将Map转换为XML- Parameters:
data- Map类型数据rootName- 根节点名namespace- 命名空间,可以为null- Returns:
- XML
-
beanToXml
将Bean转换为XML- Parameters:
bean- Bean对象- Returns:
- XML
-
beanToXml
将Bean转换为XML- Parameters:
bean- Bean对象namespace- 命名空间,可以为null- Returns:
- XML
-
beanToXml
将Bean转换为XML- Parameters:
bean- Bean对象namespace- 命名空间,可以为nullignoreNull- 忽略值为null的属性- Returns:
- XML
-
isElement
给定节点是否为Element类型节点- Parameters:
node- 节点- Returns:
- 是否为
Element类型节点
-
appendChild
在已有节点上创建子节点- Parameters:
node- 节点tagName- 标签名- Returns:
- 子节点
-
appendChild
在已有节点上创建子节点- Parameters:
node- 节点tagName- 标签名namespace- 命名空间,无传null- Returns:
- 子节点
-
appendText
创建文本子节点- Parameters:
node- 节点text- 文本- Returns:
- 子节点
-
append
追加数据子节点,可以是Map、集合、文本- Parameters:
node- 节点data- 数据
-