最近项目中需要对xml文件进行解析!有时候会遇到xml的节点大小写不一致的问题,因此写了个方法把xml文件中的节点全部转为大写的方式,在这里做个备忘。代码如下,
public static Element elementToUpper(Element ele){
ele.setName(ele.getName().toUpperCase());
List<Attribute> attrList = ele.getAttributes();
if(!attrList.isEmpty()){
for(int i=0, m = attrList.size(); i < m; i++){
Attribute attr = attrList.get(i);
attr.setName(attr.getName().toUpperCase());
}
}
List<Element> eleList = ele.getChildren();
if(!eleList.isEmpty()){
for(int i=0, m=eleList.size(); i<m; i++){
Element element = eleList.get(i);
element.setName(element.getName().toUpperCase());
elementToUpper(element);
}
}
return ele;
}
下面这个是把xml文件中的值根据节点名称存放到Map中:
public static Map<String, String> getElementAll(Element ele){
Map<String, String> map = new HashMap<String, String>();
List<Attribute> attrList = ele.getAttributes();
if(!attrList.isEmpty()){
for(int i=0, m = attrList.size(); i < m; i++){
Attribute attr = attrList.get(i);
map.put(ele.getName().toUpperCase() + attr.getName().toUpperCase(), attr.getValue());
}
}
List<Element> eleList = ele.getChildren();
if(!eleList.isEmpty()){
for(int i=0, m=eleList.size(); i<m; i++){
Element element = eleList.get(i);
Map<String, String> eleMap = getElementAll(element);
mapPutAll(map, eleMap);
}
}else if(null != ele.getValue() && ele.getValue().length() > 0){
map.put(ele.getName().toUpperCase(), ele.getValue());
}
return map;
}
/**
* 将源Map拷贝到目标Map当中
* 如果目标Map存在源Map中的对象,则在原key值上加上一个“_1”,如果还存在则“_2”,
* 如:key,key_1,key_2...
* @param target
* @param source
* @return
* @author kane xiang
*/
private static Map<String, String> mapPutAll(Map<String, String> target, Map<String, String> source){
int num = 1;
boolean bool = true;
Iterator<Entry<String, String>> it = source.entrySet().iterator();
while(it.hasNext()){
bool = true;
Entry<String, String> entry = it.next();
if(null == target.get(entry.getKey())){
target.put(entry.getKey(), entry.getValue());
}else{
while(bool){
String key = entry.getKey() + "_" + num;
if(null == target.get(key)){
target.put(key, entry.getValue());
bool = false;
}else{
num ++;
}
}
}
}
return target;
}
分享到:
相关推荐
这段代码首先加载SOAP XML文件,然后遍历所有元素节点,如果元素首字母是小写,则将其改为大写。最后,将修改后的文档写入新的XML文件。 其次,处理SOAP XML报文中的命名空间前缀,有时我们需要添加或剔除命名空间...
当我们处理SOAP XML报文时,有时会遇到需要转换XML节点名的情况,例如将节点名的首字母从小写转换为大写。以下将详细探讨这个主题。 首先,理解XML节点和节点元素的区别是至关重要的。在XML文档中,节点可以是元素...
2. **DOM树的概念**:在处理XML文档时,可以将XML文档视为一棵树形结构,其中每个元素都是一个节点。例如: - `<班级>`:根节点。 - `<学生编号="A0002">`:根节点下的子节点。 - `<姓名>王五姓名>`:学生节点下...
- **XSLT**:例如,以下XSLT片段将所有`<title>`元素转化为大写: ```xml <h1><xsl:value-of select="." /> ``` - **XPath**:在XSLT中,可以使用XPath表达式来定位XML文档中的节点。例如...
它将文档结构转换为一个树形结构,使得我们可以通过JavaScript来访问和修改文档中的各个部分。DOM节点是这个树形结构的基本单位,主要包括元素节点、属性节点和文本节点。 **元素节点** 是DOM中最核心的部分,它们...
XSLT则可以将一个XML文档转换为另一个XML文档,或者HTML、PDF等格式,以改变数据的呈现方式。例如,一个简单的XSLT转换可能将所有`<name>`元素替换为大写的文本。 总的来说,XML是一种强大的数据表示和交换工具,...
在IT领域,DOM(Document Object Model)和SAX(Simple API for XML)是两种常见的XML解析方式,而XSL(eXtensible Stylesheet Language)则用于转换XML文档的结构和格式。这篇教程将带你入门这三种技术的基础概念和...
例如,以下是一个简单的XSLT模板,它将XML文档中的所有`<name>`元素替换为大写的文本: ```xml ``` 这个例子中的`match="name"`表示模板匹配XML中的`<name>`元素,`<xsl:value-of select="."/>`则用于输出...
它被设计用来方便地选取XML节点,包括元素、属性、文本等。XPath基于W3C标准,为XML处理提供了一种强大而灵活的方法。 XPath 2.0是XPath语言的第二个主要版本,相较于1.0版本,它引入了许多新特性,如支持更多的...
5. element.nodeName:返回元素的节点名称,通常为大写字母形式的标签名。 6. element.nodeType:返回节点类型,例如元素节点类型为1。 7. element.nodeValue:返回节点的值,对元素节点而言,这个值为null。 8. ...
- **`xml`**:将内容转换为XML安全的形式。 - **`web_safe`**:将内容转换为适合网络使用的格式。 - **`eval`**:计算表达式的值。 - **`is_transform`**:判断是否是一个转换器。 - **`string`**:处理字符串相关的...
但是,你可以通过内置函数如`lower()`将字符串转换为全小写,`upper()`转为全大写,或者`title()`使每个单词首字母大写。此外,`str.capitalize()`方法用于将字符串的第一个字符转换为大写,而其余字符保持小写。 ...
例如,将字符串$s$转换为大写: ```xslt ($s)"/> ``` **1.9 对字符串进行分词** 对字符串进行分词可以使用`tokenize`函数实现。例如,按照空格对字符串$s$进行分词: ```xslt ($s, '\s+')"> ``` **1.10 不...
在处理XML或类似结构化数据时,节点变量变得尤为有用,它们可以表示XML文档中的各个元素。 ##### 2.7 对象包裹 对象包裹器决定如何将Java对象转化为FreeMarker可识别的类型,这对于复杂对象和自定义类尤为重要。 ...
这是将XML文档转换为更易于处理的数据格式的方法之一。 #### 46. xml_parse() `xml_parse()`函数解析XML数据。这是XML解析的核心操作,用于将XML文档转换为可理解的数据。 #### 47. xml_get_error_code() `xml_get...
- `ToLower()`/`ToUpper()`: 将字符串转换为小写或大写。 - `Substring()`: 获取字符串的一部分。 - `Replace()`: 在字符串中替换特定字符或子串。 - `Split()`: 按照指定分隔符将字符串分割成多个子字符串。 2...
5. 字符串方法:Python提供了许多内置的字符串方法,如`upper()`(转换为大写),`lower()`(转换为小写),`replace(old, new)`(替换子串),`strip()`(去除两侧空白),等等。 6. 使用`split()`和`join()`处理...
- 第8题:res/raw目录中的文件会原封不动地存储到设备上,不会转换为二进制格式。 - 第9题:Math.round函数将浮点数四舍五入,11.5会被转化为12,-11.5会被转化为-11。 - 第10题:销毁线程通常使用onDestroy()...