各位大哥我对xml文件不是很熟悉我有这样一个xml文件请问怎样解析

zxianwu 2007-11-05 08:03:34



<?xml version='1.0' encoding='UTF-8'?><Root><Domain>WSS</Domain><Passwd>******</Passwd><SrvCode>BalanceOper</SrvCode><!--此SrvCode固定--><SrvModule>FeeCollectGXSrv</SrvModule><!--查询欠费的类--><SrvFunction>feeCollectQry</SrvFunction><!--查询欠费的方法--><Content><![CDATA[<?xml version='1.0' encoding='GB2312'?><FeeCollectQry><FamilyId></FamilyId><AccNbr>"+tmnum+"</AccNbr><ChargeOwner>1</ChargeOwner><QryType>1</QryType></FeeCollectQry>]]></Content></Root>




注:现在我想要得到 AccNbr 这个元素怎样请问各位大哥怎样可以取到;
它有两个这样的头部信息<?xml version='1.0' encoding='GB2312'?> 请问这是代表什么意识

在线等待
...全文
136 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
xinming1558 2008-05-09
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 lsj19830812 的回复:]
嵌套的两个头部信息其实第一个才是这个xml的头部信息,第二个不是
第二个必须放在 <![CDATA[]]>标签中间,只是 <Content>的值罢了
但 <Content>中不能直接放' <','>'等字符,因为Parser需要判断:这是XML tag的开始;还是“ <”小于号,这会导致解析错误。为了解决这个问题,可以使用符号<&来代替。
但是如果text中包含太多的特殊符号,代替符号便不是一个好的办法,因此XML提供了CDATA section。里面可以直接放xml,而不…
[/Quote]
weiguolee 2007-11-09
  • 打赏
  • 举报
回复
我再补充一下:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
XML声明一般是XML文档的第一行
XML声明由以下几个部分组成:
version - -文档符合XML1.0规范,网上说现在只有1.0
encoding - -文档字符编码,默认为"UTF-8" 当然可以用GB2312的形式。
一般还有一个属性standalone - -文档定义是否在一个文件内
standalone="yes"
standalone="no"

lsj19830812 2007-11-06
  • 打赏
  • 举报
回复
嵌套的两个头部信息其实第一个才是这个xml的头部信息,第二个不是
第二个必须放在<![CDATA[]]>标签中间,只是<Content>的值罢了
但<Content>中不能直接放'<','>'等字符,因为Parser需要判断:这是XML tag的开始;还是“<”小于号,这会导致解析错误。为了解决这个问题,可以使用符号<&来代替。
但是如果text中包含太多的特殊符号,代替符号便不是一个好的办法,因此XML提供了CDATA section。里面可以直接放xml,而不会被解析
lsj19830812 2007-11-06
  • 打赏
  • 举报
回复

/**
*
*/
package com.ecc.test1105;

import java.io.File;
import java.io.IOException;
import java.io.StringReader;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;

import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;

/**
* @author Liu Shijie
*
*/
public class XmlParser {
/**
* @param args
*/
public static void main(String[] args) {
try {
//Resource r = new ClassPathResource("MyXml.xml");//使用Spring类比较方便
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
//Document d = db.parse(r.getInputStream());
Document d = db.parse(new File("MyXml.xml"));
NodeList nl = d.getChildNodes();
// System.out.println(nl.getLength());
Node n = nl.item(0);
NodeList cnl = n.getChildNodes();
// System.out.println(cnl.getLength());
for (int i = 0; i < cnl.getLength(); i++) {
Node cn = cnl.item(i);
if (cn.getNodeType() == Node.ELEMENT_NODE) {
// System.out.println(cn.getNodeName());
if (cn.getNodeName().equals("Content")) {
String cnv = cn.getFirstChild().getNodeValue();
// System.out.println(cn.getFirstChild().getNodeValue());
Document cnd = db.parse(new InputSource(
new StringReader(cnv)));
NodeList cnnl = cnd.getChildNodes();
// System.out.println(cnnl.getLength());
Node cnn = cnnl.item(0);
NodeList cncnl = cnn.getChildNodes();
// System.out.println(cncnl.getLength());
for (int j = 0; j < cncnl.getLength(); j++) {
Node cncn = cncnl.item(j);
if (cncn.getNodeType() == Node.ELEMENT_NODE) {
// System.out.println(cncn.getNodeName());
if (cncn.getNodeName().equals("AccNbr")) {
System.out.println(cncn.getFirstChild()
.getNodeValue());
}
}
}
}
}
}
} catch (ParserConfigurationException e) {
e.printStackTrace();
} catch (SAXException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}

}


pkele 2007-11-06
  • 打赏
  • 举报
回复
<?xml version= '1.0 ' encoding= 'GB2312 '?>
<?xml version= '1.0 ' encoding= 'UTF-8 '?>

这样的头文件,一般都是处理编码规则的。如输入汉字,在页面可正确显示等。
freejacky 2007-11-06
  • 打赏
  • 举报
回复
如果想要解析<![CDATA[]]> 标签中的XML,可以把<![CDATA[]]> 标签中的内容取出来后,再次用DOM转换一次,然后再解析。
stellar2020 2007-11-06
  • 打赏
  • 举报
回复
楼上的正解

67,517

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧