Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on Aug 8th, 2012  |  syntax: None  |  size: 2.50 KB  |  hits: 7  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. Boolean operation in Xpath: Using attributes
  2. Document doc = docBuilder.parse(filesInDirectory.get(i));
  3. doc.getDocumentElement().normalize();
  4. XPath xPath = XPathFactory.newInstance().newXPath();
  5. XPathExpression expr1 = xPath.compile("//codes[@ class ='class2']/code[@code]");
  6. Object result1 = expr1.evaluate(doc, XPathConstants.NODESET);
  7. NodeList nodes1 = (NodeList) result1;
  8.        
  9. System.out.println("result length"+":"+nodes1.getLength());
  10. returns 2.
  11.        
  12. if(nodes1.contains(123))
  13.        
  14. if(nodes1.contains(123) && nodes1.contains(456))
  15.    and make decision.
  16.        
  17. <metadata>
  18.    <codes class="class1">
  19.      <code code="ABC">
  20.          <detail "blah" "blah">
  21.      </code>
  22.   </codes>
  23.   <codes class="class2">
  24.     <code code="123">
  25.         <detail "blah blah"/>
  26.     </code>
  27.     <code code="456">
  28.         <detail "blah blah"/>
  29.     </code>
  30.   </codes>
  31.  </metadata>
  32.        
  33. File f = new File("test.xml");
  34.         XPathFactory factory = XPathFactory.newInstance();
  35.         XPath xpath = factory.newXPath();
  36.         InputSource src = new InputSource(new FileInputStream(f));
  37.         Object result = xpath.evaluate("//codes[@class='class2']/code/@code",src,XPathConstants.NODESET);
  38.         NodeList lst = (NodeList)result;
  39.  
  40.         List<String> codeList = new ArrayList<String>();
  41.         for(int idx=0; idx<lst.getLength(); idx++){
  42.             codeList.add(lst.item(idx).getNodeValue());
  43.         }
  44.         if(codeList.contains("123")){
  45.             System.out.println("123");
  46.         }
  47.  
  48.         if(codeList.contains("123") && codeList.contains("456")){
  49.             System.out.println("123 and 456");
  50.         }
  51.        
  52. XPathExpression expr1 = xPath.compile("//codes[@class]");
  53. Object result1 = expr1.evaluate(doc, XPathConstants.NODESET);
  54. NodeList nodes1 = (NodeList) result1;
  55.        
  56. if (node.getNodeValue().equals("123"))
  57.        
  58. /*/codes[@class]/code[@code = '123' or @code = '456']
  59.        
  60. <xsl:stylesheet version="1.0"
  61.  xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  62.  <xsl:output omit-xml-declaration="yes" indent="yes"/>
  63.  <xsl:strip-space elements="*"/>
  64.  
  65.  <xsl:template match="/">
  66.   <xsl:copy-of select=
  67.   "/*/codes[@class]/code[@code = '123' or @code = '456']"/>
  68.  </xsl:template>
  69. </xsl:stylesheet>
  70.        
  71. <metadata>
  72.     <codes class="class1">
  73.         <code code="ABC">
  74.             <detail/>
  75.         </code>
  76.     </codes>
  77.     <codes class="class2">
  78.         <code code="123">
  79.             <detail />
  80.         </code>
  81.         <code code="456">
  82.             <detail />
  83.         </code>
  84.     </codes>
  85. </metadata>
  86.        
  87. <code code="123">
  88.    <detail/>
  89. </code>
  90. <code code="456">
  91.    <detail/>
  92. </code>