-1

我想用正则表达式获取字符串中的所有 xml 标签。
样品:

<label>123</label>

我想得到:

<label></label>
4

1 回答 1

0
    1. try to take the 2 example 

for a number use this regex
\d-->Any digit, short for [0-9]

    import org.w3c.dom.Document;
    import org.w3c.dom.Element;
    import org.w3c.dom.Node;
    import org.w3c.dom.NodeList;
    import org.xml.sax.SAXException;
    import org.xml.sax.SAXParseException;


          try {

                        DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance();
                        DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder();
                        Document doc = docBuilder.parse (new File("c:\\tmp\\my.xml"));

                        // normalize text representation
                        doc.getDocumentElement ().normalize ();
                        System.out.println ("Root element of the doc is " +  doc.getDocumentElement().getNodeName());


                        NodeList listOfBooks = doc.getElementsByTagName("book");
                        int totalBooks = listOfBooks.getLength();
                        System.out.println("Total no of books : " + totalBooks);

                        for(int i=0; i<listOfBooks.getLength() ; i++){


                            Node firstBookNode = listOfBooks.item(i);
                            if(firstBookNode.getNodeType() == Node.ELEMENT_NODE){


                                Element firstElement = (Element)firstBookNode;

                                System.out.println("Year :"+firstElement.getAttribute("year"));

                                //-------
                                NodeList firstNameList = firstElement.getElementsByTagName("title");
                                Element firstNameElement = (Element)firstNameList.item(0);

                                NodeList textFNList = firstNameElement.getChildNodes();
                                System.out.println("title : " + 
                                       ((Node)textFNList.item(0)).getNodeValue().trim());



                            }


                        }//end of for loop with s var


                    }catch (SAXParseException err) {
                    System.out.println ("** Parsing error" + ", line " 
                         + err.getLineNumber () + ", uri " + err.getSystemId ());
                    System.out.println(" " + err.getMessage ());

                    }catch (SAXException e) {
                    Exception x = e.getException ();
                    ((x == null) ? e : x).printStackTrace ();

                    }catch (Throwable t) {
                    t.printStackTrace ();
                    }


                }

///Regex example

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class RegexMatches
{
    public static void main( String args[] ){

      // String to be scanned to find the pattern.
      String line = "This order was places for QT3000! OK?";
      String pattern = "(.*)(\\d+)(.*)";

      // Create a Pattern object
      Pattern r = Pattern.compile(pattern);

      // Now create matcher object.
      Matcher m = r.matcher(line);
      if (m.find( )) {
         System.out.println("Found value: " + m.group(0) );
         System.out.println("Found value: " + m.group(1) );
         System.out.println("Found value: " + m.group(2) );
      } else {
         System.out.println("NO MATCH");
      }
   }
}
于 2013-07-08T13:29:32.457 回答