java解析xml github_xml解析 - GithubXD的个人空间 - OSCHINA - 中文开源技术交流社区

本文介绍了两种解析XML字符串的方法:一种是直接构建并解析XML字符串;另一种是通过创建Document对象并解析XML内容来提取节点信息及属性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

方法一:

String s_xml1 = "" +

"

lalalalal" +

"

1234" +

"";

try {

DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();

DocumentBuilder builder = documentBuilderFactory.newDocumentBuilder();

Document document = builder.parse(new InputSource(new StringReader(s_xml1)));

Element element = document.getDocumentElement();

NodeList childNodes = element.getChildNodes();

if (childNodes != null) {

for (int i = 0; i < childNodes.getLength(); i++) {

Node item = childNodes.item(i);

String name = item.getNodeName();

String nodeValue = item.getNodeValue();

String textContent = item.getTextContent();

Log.i("xx-----", name + "---" + nodeValue + "---" + textContent);

}

}

} catch (Exception e) {

e.printStackTrace();

}

方法二:

public void s() {

//创建一个DocumentBuilderFactory的对象

DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();

//创建一个DocumentBuilder的对象

String xmlStr = "<?xml version=\"1.0\" encoding=\"utf-8\"?>

";

StringReader sr = new StringReader(xmlStr);

InputSource is = new InputSource(sr);

HashMap hashMap = new HashMap();

try {

//创建DocumentBuilder对象

DocumentBuilder db = dbf.newDocumentBuilder();

//通过DocumentBuilder对象的parser方法加载books.xml文件到当前项目下

Document document = db.parse(is);

//获取所有book节点的集合

NodeList bookList = document.getElementsByTagName("title");

//通过nodelist的getLength()方法可以获取bookList的长度

System.out.println("一共有" + bookList.getLength() + "个title节点");

for (int i = 0; i < bookList.getLength(); i++) {

Node book = bookList.item(i);

NamedNodeMap attrs = book.getAttributes();

System.out.println("第 " + (i + 1) + "个title节点共有" + attrs.getLength() + "个属性");

for (int j = 0; j < attrs.getLength(); j++) {

//通过item(index)方法获取book节点的某一个属性

Node attr = attrs.item(j);

if (attr.getNodeName().equals("CONTENT")) {

String name = attr.getNodeName();

String value = attr.getNodeValue();

//获取属性名

// System.out.print("属性名:" + name);

//获取属性值

// System.out.println("--属性值: " + value);

String[] splitValue = value.split(",");

for (int k = 0; k < splitValue.length; k++) {

String resultValue = splitValue[k];

String[] splitResult = resultValue.split("=");

hashMap.put(splitResult[0], splitResult[1]);

}

}

}

}

for (String key : hashMap.keySet()) {

System.out.println("key= " + key + " and value= " + hashMap.get(key));

}

} catch (Exception e) {

e.printStackTrace();

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值