一个最简单的XML解析

近来很多项目用到XML,根据需要写了个简单的XML解析方法,跟大家一起分享,帮忙顶起!!

import java.io.IOException;
import java.net.URL;
import java.util.InvalidPropertiesFormatException;
import java.util.Properties;


public class ParserXML {
private static Properties prop = new Properties();

public String getValueFromProp(String key) {
return prop.getProperty(key);
}

public void parsXML(String filename) {
URL propurl = ParserXML.class.getClassLoader().getResource(filename);
try {
prop.loadFromXML(propurl.openStream());
} catch (InvalidPropertiesFormatException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}

public static void main(String[] args){
ParserXML parser = new ParserXML();
parser.parsXML("severity-color.xml");
System.out.println(parser.getValueFromProp("Severity0"));
}


[size=x-large]
severity-color.xml[/size]

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
<properties>
<comment>Severity</comment>
<entry key="Severity0">green</entry>
<entry key="Severity2">yellow</entry>
<entry key="Severity3">orange</entry>
<entry key="Severity4">red</entry>
<entry key="Severity5">purple</entry>
</properties>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单XML解析框架的示例代码: ```c #include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX_TAG_LENGTH 256 #define MAX_ATTRS 10 typedef struct { char tag[MAX_TAG_LENGTH]; char* attrs[MAX_ATTRS]; char* values[MAX_ATTRS]; int num_attrs; } xml_element; void parse_element(char* line, xml_element* elem) { char* token; char* tag; char* attr; char* value; int i; // Get tag name token = strtok(line, "<>"); strcpy(elem->tag, token); // Get attributes and values i = 0; while ((token = strtok(NULL, "<>")) != NULL) { if (i >= MAX_ATTRS) { fprintf(stderr, "Too many attributes!\n"); exit(1); } if (token[0] == '/') { break; } attr = strtok(token, " "); value = strtok(NULL, " "); elem->attrs[i] = strdup(attr); elem->values[i] = strdup(value); i++; } elem->num_attrs = i; } int main(int argc, char** argv) { char line[1024]; xml_element elem; // Open file for reading FILE* fp = fopen("example.xml", "r"); if (fp == NULL) { fprintf(stderr, "Cannot open file!\n"); exit(1); } // Read file line by line and parse elements while (fgets(line, sizeof(line), fp) != NULL) { if (line[0] == '<') { parse_element(line, &elem); printf("Tag: %s\n", elem.tag); for (int i = 0; i < elem.num_attrs; i++) { printf("Attribute %d: %s = %s\n", i+1, elem.attrs[i], elem.values[i]); } } } // Close file fclose(fp); return 0; } ``` 该框架的基本思想是读取XML文件并逐行解析,将每个元素的标签、属性和值存储在一个xml_element结构体中。 在parse_element函数中,首先获取元素的标签名,然后循环处理每个属性和值对,直到遇到结束标记。每个属性和值对都存储在elem->attrs和elem->values数组中,并通过elem->num_attrs记录属性数量。 在主函数中,我们打开XML文件并逐行读取。如果一行以“<”开头,我们假设它是一个元素,并调用parse_element函数解析它。最后,我们关闭文件并结束程序。 请注意,这只是一个简单的框架示例,无法处理所有可能的XML格式。如果需要处理更复杂的XML文件,请使用现有的XML解析库。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值