问题是这样的:<?xml version="1.0" encoding="UTF-8"?>
<ram>
<managedObject class="BTS" distName = "PLMN-PLMN/BSC-100/BTS-1" id="21851987">
<list name="celltpye">
<P>0</P>
<P>0</P>
<P>0</P>
<P>0</P>
<P>0</P>
<P>0</P>
<P>0</P>
<P>0</P>
<P>0</P>
<P>0</P>
<P>0</P>
</list>
<P name="name">chunshensijiyuan</P>
<p name="type">10</p>
<p name="trxpoint">1</p>
<P name="adfagq">fkbwrw</P>
<p name="colnumber">89</p>
<p name="stilllack">1</p>
</managedObject>
<managedObject class="BSC" distName = "PLMN-PLMN/BSC-100" id="21851987">
<list name="celltpye">
<P>0</P>
<P>0</P>
<P>0</P>
<P>0</P>
<P>0</P>
<P>0</P>
<P>0</P>
<P>0</P>
<P>0</P>
<P>0</P>
<P>0</P>
</list>
<P name="name">Italy</P>
<p name="type">1</p>
<p name="trxpoint">1</p>
<P name="adfagq">fkbwrw</P>
<p name="colnumber">89</p>
<p name="stilllack">1</p>
</managedObject>
<managedObject class="BTS" distName = "PLMN-PLMN/BSC-100/BTS-2" id="21851988">
<list name="celltpye">
<P>0</P>
<P>0</P>
<P>0</P>
<P>0</P>
<P>0</P>
<P>0</P>
<P>0</P>
<P>0</P>
<P>0</P>
<P>0</P>
<P>0</P>
</list>
<P name="name">yinduxincun</P>
<p name="type">10</p>
<p name="trxpoint">1</p>
<P name="adfagq">joeiqonqa</P>
<p name="colnumber">158</p>
<p name="stilllack">1</p>
</managedObject></ram>
XML如上。这只是一部分因为文件太大只能用SAX
现在想得到 <managedObject class="BTS"> 中的指定元素。比如:
<managedObject class="BTS" distName = "PLMN-PLMN/BSC-100/BTS-2" id="21851988">这个节点下面的<P name="name">yinduxincun</P>
<p name="type">10</p>
<p name="trxpoint">1</p>这三个元素
而且还要保留 <p>中的Attributes小弟不才,请各位前辈赐教了。谢谢
<ram>
<managedObject class="BTS" distName = "PLMN-PLMN/BSC-100/BTS-1" id="21851987">
<list name="celltpye">
<P>0</P>
<P>0</P>
<P>0</P>
<P>0</P>
<P>0</P>
<P>0</P>
<P>0</P>
<P>0</P>
<P>0</P>
<P>0</P>
<P>0</P>
</list>
<P name="name">chunshensijiyuan</P>
<p name="type">10</p>
<p name="trxpoint">1</p>
<P name="adfagq">fkbwrw</P>
<p name="colnumber">89</p>
<p name="stilllack">1</p>
</managedObject>
<managedObject class="BSC" distName = "PLMN-PLMN/BSC-100" id="21851987">
<list name="celltpye">
<P>0</P>
<P>0</P>
<P>0</P>
<P>0</P>
<P>0</P>
<P>0</P>
<P>0</P>
<P>0</P>
<P>0</P>
<P>0</P>
<P>0</P>
</list>
<P name="name">Italy</P>
<p name="type">1</p>
<p name="trxpoint">1</p>
<P name="adfagq">fkbwrw</P>
<p name="colnumber">89</p>
<p name="stilllack">1</p>
</managedObject>
<managedObject class="BTS" distName = "PLMN-PLMN/BSC-100/BTS-2" id="21851988">
<list name="celltpye">
<P>0</P>
<P>0</P>
<P>0</P>
<P>0</P>
<P>0</P>
<P>0</P>
<P>0</P>
<P>0</P>
<P>0</P>
<P>0</P>
<P>0</P>
</list>
<P name="name">yinduxincun</P>
<p name="type">10</p>
<p name="trxpoint">1</p>
<P name="adfagq">joeiqonqa</P>
<p name="colnumber">158</p>
<p name="stilllack">1</p>
</managedObject></ram>
XML如上。这只是一部分因为文件太大只能用SAX
现在想得到 <managedObject class="BTS"> 中的指定元素。比如:
<managedObject class="BTS" distName = "PLMN-PLMN/BSC-100/BTS-2" id="21851988">这个节点下面的<P name="name">yinduxincun</P>
<p name="type">10</p>
<p name="trxpoint">1</p>这三个元素
而且还要保留 <p>中的Attributes小弟不才,请各位前辈赐教了。谢谢
解决方案 »
- 设计一个类获取数据库中数据表的数据项
- 問下枚舉enum啊
- 成员和局部变量问题
- 关于immutable objects在线程应用中的句话的理解????
- 多个下载几编码问题?
- 关于使用java.util.GregorianCalendar类的奇怪问题---烦请高手给以解答
- 问下,算出了某年某个周期,如何算出这个周期的开始日期和结束日期啊,高手救教
- 请问J2SDK1.2.1在XP中的环境变量怎样设置?
- 请各位看一下如何在这段代码中改进Java中字符串不可改变的缺陷?
- 为什么我用 JDBC:ORACLE:OCI8时,出现ora06401:netcmn:无效的驱动程序指示符。错误
- 怎么用正则表达式获取当的网址
- 不要在构造函数中调用可重写的方法
在startElement中判断BTS匹配则设flag
在endElement中取消flag
在startElement中判断flag若已设置则输出当前元素如此而已
SAXParserFactory spf = SAXParserFactory.newInstance();
SAXParser sp = spf.newSAXParser();
XMLReader xr = sp.getXMLReader();
xr.setContentHandler(new SaxHandler());
URL file = GetBtsInnerPElements.class.getResource("management.xml");
xr.parse(file.toString()); }}class SaxHandler implements ContentHandler { private boolean enteredManagedObj = false;
private boolean enteredP = false;
private ArrayList attNames = new ArrayList(); public void setDocumentLocator(Locator locator) {
} public void startDocument() throws SAXException {
attNames.add("name");
attNames.add("type");
attNames.add("trxpoint");
} public void endDocument() throws SAXException {
} public void startPrefixMapping(String prefix, String uri)
throws SAXException {
} public void endPrefixMapping(String prefix) throws SAXException {
} public void startElement(String uri, String localName, String qName,
Attributes atts) throws SAXException {
if ("managedObject".equals(qName)) {
int length = atts.getLength();
for (int i=0; i<length; i++) {
String name = atts.getQName(i);
String value = atts.getValue(i);
if ("class".equals(name) && "BTS".equals(value)){
enteredManagedObj = true;
break;
}
}
}
if (enteredManagedObj && "p".equalsIgnoreCase(qName)) {
int length = atts.getLength();
for (int i=0; i<length; i++) {
String name = atts.getQName(i);
if (attNames.contains(name)) {
enteredP = true;
break;
}
}
if (enteredP){
System.out.print("<" + qName);
for (int i=0; i<length; i++) {
String name = atts.getQName(i);
String value = atts.getValue(i);
System.out.print(" " + name + "=\"" + value + "\"");
}
System.out.print( ">");
}
}
} public void endElement(String uri, String localName, String qName)
throws SAXException {
if (enteredManagedObj && "managedObject".equals(qName))
enteredManagedObj = false;
if (enteredP && "p".equalsIgnoreCase(qName)) {
enteredP = false;
System.out.println("</" + qName + ">");
}
} public void characters(char[] ch, int start, int length)
throws SAXException {
if (enteredP)
for (int i=0; i<length; i++)
System.out.print(ch[start+i]);
} public void ignorableWhitespace(char[] ch, int start, int length)
throws SAXException {
} public void processingInstruction(String target, String data)
throws SAXException {
} public void skippedEntity(String name) throws SAXException {
} } 注意我把XML文档取名为management.xml,放在类路径中了