2013-10-15 178 views
1

我是Java世界的新手,并且努力解析其中具有属性的XML字符串。解析XML字符串

任何人都可以帮助我如何解析这个并获得所有的数据?我的XML字符串可以根据NumOfParams更改大小。

下面是XML:

<PictureManager> 
    <FuncName>DisplayImage</FuncName> 
    <NumOfParams>2</NumOfParams> 
    <Parameters> 
     <Param type="integer">10</Param> 
     <Param type="String">C://Me.jpg</Param> 
    </Parameters> 
</PictureManager> 

我需要能够得到“整数”和“字符串”从XML属性也。 XML字符串可以根据< NumOfParams>

增长或缩小如果您可以发布一些实际创建带有上述标记的XML字符串的代码,它将会有所帮助。

在此先感谢。

+0

尝试先设置XML格式。没有人会回答你的答案,如果他们不明白你的意思 – Sage

+0

你最好使用XPath来处理这种类型的XML查询。 – tom

回答

1

在java库中存在解析XML文档的方法。例如这样的:

DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); 
    DocumentBuilder db = dbf.newDocumentBuilder(); 
    InputSource xml = new InputSource(); 
    xml.setCharacterStream(xmlSTring); 
    Document doc = db.parse(xml); 
    NodeList nodes = doc.getElementsByTagName("PictureManager"); 

    // iterate objects 
    for (int i = 0; i < nodes.getLength(); i++) { 
     Element element = (Element) nodes.item(i); 
     . 
     . 
     . 
    } 
+0

你可以发布FOR循环内的代码吗? 我对如何获取标签属性(如type =“integer”和type =“string”)感到困惑。 –

+0

我不记得文档,只是这些类的谷歌文档,并寻找返回参数和值的方法。 – libik

+0

@DipuKS如果你想要有整数或字符串,你可能需要使用属性名称查询的“getAttribute”。请参阅我发布的答案,并将getTextContent更改为getAttribute,您将拥有。 – Eric

1

我的建议是从基本的步骤开始:

首先,你可能需要考虑一下你的XML文件的连接:网址是什么?本地? 其次,你需要实例的DocumentBuilderFactory和建设者

的DocumentBuilder dBuilder = DocumentBuilderFactory.newInstance()newDocumentBuilder()。

OR

的URLConnection康恩=新的URL(URL).openConnection(); InputStream inputXml = conn.getInputStream();

DocumentBuilder docBuilder = DocumentBuilderFactory.newInstance() .newDocumentBuilder(); Document xmlDoc = docBuilder.parse(inputXml);

下一步是解析XML文件:

文献XMLDOM = dBuilder.parse(XMLFILE);

之后,它会变成XML文件转换成DOM结构或树结构,你必须通过节点旅游节点得到属性内容。在你的情况下,你需要获得内容。下面是一个例子:

String getContent(Document doc, String tagName){ 
     String result = ""; 

     NodeList nList = doc.getElementsByTagName(tagName); 
     if(nList.getLength()>0){ 
      Element eElement = (Element)nList.item(0); 
      String ranking = eElement.getTextContent(); 
      if(!"".equals(ranking)){ 
       result = String.valueOf(ranking); 
      } 

     } 
     return result; 
    } 

回报的getContent的(XMLDOM “NumOfParams”)是 “2”。

解析完简单的xml文件后,您可以尝试将所有xml文件移出并打印出来。然后与SAX或JAXB联系。

祝你好运