SORU
11 Mayıs 2010, Salı


Nasıl Java XML XPath kullanarak okumak

XML veri Java XPath kullanarak okumak istiyorum, benim ihtiyacına göre bilgi için XML ayrıştırma için mümkün değil topladım.

yapmak istediğim şey burada:

XML URL üzerinden dosya, XPath ayrıştırmak için kullanabilirsiniz sonra, bu iki yöntem oluşturmak istiyorum. Belirli düğüm özniteliği bir ıd girin, ve sonuç olarak tüm alt düğümlerin alıyorum, ikincisi ise ben sadece belirli bir alt düğüm değeri sadece almak istediğinizi varsayalım

<?xml version="1.0"?>
<howto>
  <topic name="Java">
      <url>http://www.rgagnonjavahowto.htm</url>
  <car>taxi</car>
  </topic>
  <topic ame="PowerBuilder">
       <url>http://www.rgagnon/pbhowto.htm</url>
       <url>http://www.rgagnon/pbhowtonew.htm</url>
  </topic>
  <topic name="Javascript">
        <url>http://www.rgagnon/jshowto.htm</url>
  </topic>
 <topic name="VBScript">
       <url>http://www.rgagnon/vbshowto.htm</url>
 </topic>
 </howto>

Yukarıdaki örnek @adı ve ben sadece url istiyorum bir işlevi de @İ arama) adı eğer tüm öğeleri okumak için 'Javascript' sadece geri bir düğüm elemanı.

Benim sorum :) temizledim umarım

Teşekkürler.

Kai

CEVAP
11 Mayıs 2010, Salı


Bu hat boyunca bir şey gerekir:

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document doc = builder.parse(<uri_as_string>);
XPathFactory xPathfactory = XPathFactory.newInstance();
XPath xpath = xPathfactory.newXPath();
XPathExpression expr = xpath.compile(<xpath_expression>);

Sonra expr.evaluate() belge kodu tanımlanmış geçen ve bekliyoruz dönüş türü Ara ve sonuç nesne türü için sonuç dökme.

Yardıma ihtiyacın olursa bir özel XPath ifadeleri, muhtemelen sormak gibi ayrı bir soru (tabii, bu soru daha önce burada - anladım senin sormak nasıl kullanılır API Java).

Edit: (yoruma Cevap): Bu bir XPath ifadesi senin adını değiştirmek erişim altında ilk URL öğenin metin almak

/howto/topic[@name='PowerBuilder']/url/text()

Bu ikinci olacak:

/howto/topic[@name='PowerBuilder']/url[2]/text()

Bu kod ile alıyorum:

expr.evaluate(doc, XPathConstants.STRING);

Eğer birçok URL, belirli bir düğüm nasıl bilmiyorum eğer doğru değilse, o zaman böyle bir şey yapman gerektiğini dile getirdi:

XPathExpression expr = xpath.compile("/howto/topic[@name='PowerBuilder']/url");
NodeList nl = (NodeList) expr.evaluate(doc, XPathConstants.NODESET);

Ve sonra NodeList döngü.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Hollyscoop

    Hollyscoop

    30 Ocak 2007
  • Ricardo Cerqueira

    Ricardo Cerq

    28 Mayıs 2008