XML парсер на JAVA

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by slesh, 24 Jan 2011.

  1. slesh

    slesh Elder - Старейшина

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    Столкнулся с одной проблемкой, в яве особо не приходилось кодить, а работать с XML - еще меньше.
    А тут необходимо получить данные из инета в виде XML и спарсить определенное значение.

    Сам XML имеет вид:
    Code:
    <info>
    	<records>
    		<name>zzzz</name>
    		<rec_info>
    			<summary>ЭТИ ДАННЫЕ НАДО ПОЛУЧИТЬ</summary>
    		</rec_info>
    	</records>
    </info>
    
    Пытался чтото навоять, но толком ничего не получается/ Грубо выражаясь код:
    Code:
    URL url = new URL(urlsite);
    URLConnection conn = url.openConnection();
    DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
    DocumentBuilder builder = factory.newDocumentBuilder();
    Document dom = builder.parse(conn.getInputStream());
    Element root = dom.getDocumentElement();
    
    т.е. до root я добрался а как дальше - хз
    Было бы очень хорошо если бы можно былобы вообще добраться до элемента через конструкцию вида
    zzz = zzzzzz("records.rec_info.summary");
    но вот как это сделать - хз
     
    #1 slesh, 24 Jan 2011
    Last edited: 24 Jan 2011
  2. slesh

    slesh Elder - Старейшина

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    После долгих мучений придумал как можно всё спарсить и чтобы было удобно
    Code:
        public String GetXMLValueByPath(Element root, String path)
        {
        	String[] arr = path.split("\\.");
        	
        	for (int x = 0; x < arr.length; x++)
        	{
        		root = (Element)root.getElementsByTagName(arr[x]).item(0);
        		 if (root == null)
        		 {
        			 break;
        		 }
        	}
        	
        	return root.getTextContent();
        }
    
    на входе root элемент и путь вида "records.rec_info.summary"
    на выходе содержимое
     
    #2 slesh, 24 Jan 2011
    Last edited: 24 Jan 2011