首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何解析给定格式的XML文件?

如何解析给定格式的XML文件?
EN

Stack Overflow用户
提问于 2009-11-25 15:01:12
回答 4查看 178关注 0票数 0

如果我能有一个样例代码来使用DOM/SAX解析器解析以下格式的XML,我会很高兴的。

代码语言:javascript
复制
<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>

谢谢你......

EN

回答 4

Stack Overflow用户

发布于 2009-11-25 15:05:55

通过这个简单的tutorial来理解DOM和SAX解析,并尝试自己编写代码。如果你遇到困难,那就问一些具体的问题。

票数 2
EN

Stack Overflow用户

发布于 2009-11-25 15:05:56

在这种情况下编写一个SAX ContentHandler几乎不难。

重载的startElement函数可以只检查您是否处于协议或CS中,并根据哪一个,从覆盖的字符函数中追加字符,并根据您所处的状态,将字符追加到少数字符串中的一个。

http://www.devshed.com/c/a/Python/Parsing-XML-with-SAX-and-Python/2/

上面的教程是针对Python的,但由于Python很容易阅读,您应该能够掌握解析它所需的要点。

票数 0
EN

Stack Overflow用户

发布于 2009-11-25 15:40:52

我建议使用jDom。很久以前,我不得不用Java语言解析XML文件,但当我不得不这样做时,我总是结合使用jDom和XPath。这使得在元素列表中导航并具有适当的方法变得非常容易,这些方法给定一个XML元素返回给您-例如-一个Protocol对象。

代码语言:javascript
复制
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;
}

希望你明白我的想法。注意,这是我凭空写出来的,所以我不能保证它会工作:)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1795127

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档