如果我可以使用DOM / SAX解析器来解析以下格式的XML,我会很高兴。
<MMV>Sysdecs000110010101</MMV>
<Protocol name="SNMP">
<CS CommandString="wmanIf2BsOfdmaTTG" oid="1.3.6.1.2.1.10.184.1.1.6.2.2.1.3.1" Get_SecurityString="public" Set_SecurityString="private" type="integer"></CS>
<CS CommandString="wmanIf2BsOfdmaRTG" oid="1.3.6.1.2.1.10.184.1.1.6.2.2.1.4.1" Get_SecurityString="public" Set_SecurityString="private" type="integer"></CS>
<CS CommandString="wmanIf2BsOfdmaFrameDurationCode" oid="1.3.6.1.2.1.10.184.1.1.6.2.2.1.9.1" Get_SecurityString="public" Set_SecurityString="private" type="integer"></CS>
</Protocol>
<Protocol name="CLI">
<CS CommandString="show clock" mode="usermode" type="get" username="aaa" password="bbb"/>
<CS CommandString="show version" mode="usermode" type="get" username="bbb" password="ccc"/>
<CS CommandString="set username" mode="configrmode" type="set" username="cc" password="ddd"/>
</Protocol>
谢谢你.........
答案 0 :(得分:2)
通过这个简单的tutorial来理解DOM和SAX解析并尝试自己编写代码。如果您遇到困难,请询问具体问题。
答案 1 :(得分:0)
编写SAX ContentHandler很难写出来。
重载的startElement函数可以检查你是在一个协议还是一个CS,并根据哪一个,从被覆盖的字符函数中追加字符,并根据你所处的状态,将字符附加到一个少数几个字符串。
http://www.devshed.com/c/a/Python/Parsing-XML-with-SAX-and-Python/2/
上面的教程适用于Python,但由于Python非常容易阅读,因此您应该能够了解解析此内容所需的内容。
答案 2 :(得分:0)
我建议使用jDom。很久以前,我不得不用Java解析XML文件,但是当我不得不这样做时,我总是将jDom与XPath结合使用。这使得在元素列表中导航变得非常容易,并且使用适当的方法给予XML元素返回 - 例如 - Protocol对象。
public List<Protocol> parseXMLDoc(){
List<Protocol> protocolObjs = new ArrayList<Protocol>();
...
Document doc = ....; //the xml DOM document
Element root = doc.getRootElement();
List<Element> protChildElements = root.getChildren();
foreach(Element protocolElement : protChildElements){
Protocol obj = getProtocolObj(protocolElement);
if(obj != null)
protocolObjs.add(obj);
}
return protocolObjs;
}
private Protocol getProtocolObj(Element xmlProtocolElement){
Protocol result = new Protocol();
//parse the xml elements and set the data
//through according setters of the Protocol obj
Element csEl = xmlProtocolElement.getChild("cs");
CS csObj = getCSObj(csEl);
result.setCS(csObj);
...
return result;
}
希望你有我的想法。请注意,我从头脑中写下了这个,所以我不能保证它会起作用:)
答案 3 :(得分:0)
您的XML代码段问题在于它的格式不正确。它看起来更像是一个多XML文档。标准库会有问题。可以使用SAX解析器或pull解析器,在报告根元素结束后重置解析器。使用拆分器后,您应该能够将这些SAX事件提供给XOM等库。这只是一个想法,我从来没有尝试过。