0

I wish to split a string XML

rawXML  "<?xml version='1.0' encoding='iso-8859-1'?>\n<ResDoc>\n<resume canonversion='2' dateversion='2' present='735453' xml:space='preserve'>Jack - A Web Resume\nHello,\n\nMy name is Jack.\n\n<statements><personal>This website is all about my career, work experience and skill set. Unlike a traditional resume (available here in Word and PDF) my Web Resume is interactive. Feel free to run a query, a great way to see if I would be a good fit for you and your company, or click on any of the blue links for more details and work samples.\n\nJust like my career and capabilities, this site is always growing as I add more examples of my work, and even some blog entries or documentation/ tutorials. You will see this site grow as I do!</personal></statements>\n\nI want to thank you for stopping by!\n\nResume\n\n<experience>Current employer\t2013\tCurrent\t<title>Systems Administrator</title>\t<description>Windows &amp; Altiris administration, SEP &amp; Credant Encryption Management and Policies,\nEMR Software Dev company\t2012\t2013\tHelpesk Technician II\tOffice 365,Data-Center migration, Corporate image creation\\ configuration, Domain administration\nCommunications\t2011\t2012\tSr. Helpesk Technician\tPrimarily managed IT support issues, requests and tickets from local station &amp; east coast.</description>\n<job id='1'><employer>University\t2008</employer>\t2011\t<title>Desktop Technician/ Analyst\tDesktop Support</title>, <description>managing tickets &amp; walk-ins. I.T. support for professors &amp; faculty..</description></job>\n<job id='2'><employer>Emergence Enterprises LLC</employer>\t2006\t<description>2008\tManaging Member &amp; Technology Consultant\t1099 Contractor in City1 and City 2 areas. Computer consultation and support.\n\nHightlights of IT Skills \nDon't be shy! Please, click the links for work samples!\n\nTechnical Support\tSystems Deployment Configuration &amp; Upgrading\tScripting packaging and Automation\nPowerShell\tVBScript\tBatch\nAutoIT\tSQL\tSymantec Management Platform Administration\nPatches &amp; Updates\tTraining &amp; Mentoring\tAV management and deployment\nVPN\tProxy and Firewall\tDisk Encryption policy and deployment\nLAN/WAN Administration\tInventory Solutions\tand More!</description></job></experience>\nReferences\n\nRef_1\tSystems Engineer II\tnationwide company\nRef_2\tTechnology &amp; Systems Manager\tUniversity\nRef_3\tInfrastructure Project Manager\tLocal company</resume>\n\n<skillrollup version='1'>\n  <canonskill experience='1' expidrefs='2' idrefs='2' name='automation'>\n    <variant>Automation</variant>\n  </canonskill>\n  <canonskill experience='1' expidrefs='2' idrefs='2' name='consulting'>\n    <variant>Consultant</variant>\n    <variant>consultation</variant>\n  </canonskill>\n  <canonskill experience='1' expidrefs='2' idrefs='2' name='cryptography'>\n    <variant>Encryption</variant>\n  </canonskill>\n  <canonskill experience='1' expidrefs='2' idrefs='2' name='firewalls'>\n    <variant>Firewall</variant>\n  </canonskill>\n  <canonskill experience='1' name='imaging'>\n    <variant>image</variant>\n  </canonskill>\n  <canonskill experience='1' expidrefs='2' idrefs='2' name='inventory management'>\n    <variant>Inventory</variant>\n  </canonskill>\n  <canonskill experience='1' expidrefs='2' idrefs='2' name='lan'>\n    <variant>LAN</variant>\n  </canonskill>\n  <canonskill experience='1' expidrefs='1,2' idrefs='1,2' name='management'>\n    <variant>Managing</variant>\n    <variant>managing</variant>\n  </canonskill>\n  <canonskill experience='1' expidrefs='2' idrefs='2' name='mentoring'>\n    <variant>Mentoring</variant>\n  </canonskill>\n  <canonskill experience='1' name='microsoft office'>\n    <variant>Office</variant>\n  </canonskill>\n  <canonskill experience='1' name='microsoft windows'>\n    <variant>Windows</variant>\n  </canonskill>\n  <canonskill experience='1' name='migration'>\n    <variant>migration</variant>\n  </canonskill>\n  <canonskill experience='1' expidrefs='2' idrefs='2' name='packaging'>\n    <variant>packaging</variant>\n  </canonskill>\n  <canonskill experience='1' name='policy analysis'>\n    <variant>Policies</variant>\n  </canonskill>\n  <canonskill experience='1' expidrefs='2' idrefs='2' name='proxy server'>\n    <variant>Proxy</variant>\n  </canonskill>\n  <canonskill experience='1' expidrefs='2' idrefs='2' name='shell scripting'>\n    <variant>Scripting</variant>\n  </canonskill>\n  <canonskill experience='1' expidrefs='2' idrefs='2' name='sql'>\n    <variant>SQL</variant>\n  </canonskill>\n  <canonskill experience='1' expidrefs='2' idrefs='2' name='symantec packages'>\n    <variant>Symantec</variant>\n  </canonskill>\n  <canonskill experience='1' expidrefs='2' idrefs='2' name='technical support'>\n    <variant>Technical Support</variant>\n  </canonskill>\n  <canonskill experience='1' name='technician'>\n    <variant>Technician</variant>\n    <variant>Technician II</variant>\n  </canonskill>\n  <canonskill experience='1' expidrefs='2' idrefs='2' name='upgrades'>\n    <variant>Upgrading</variant>\n  </canonskill>\n  <canonskill experience='1' expidrefs='2' idrefs='2' name='vbscript'>\n    <variant>VBScript</variant>\n  </canonskill>\n  <canonskill experience='1' expidrefs='2' idrefs='2' name='vpn'>\n    <variant>VPN</variant>\n  </canonskill>\n  <canonskill experience='1' expidrefs='2' idrefs='2' name='wan'>\n    <variant>WAN</variant>\n  </canonskill>\n</skillrollup>\n</ResDoc>\n" 

I have tried use the implementation from this question

    private static String splitXML(String rawXML) {
    try{
        XMLInputFactory xif = XMLInputFactory.newFactory();
        XMLStreamReader xsr = xif.createXMLStreamReader(new StringReader(rawXML));

        xsr.nextTag(); // Advance to "svg" element.
        int attributeCount = xsr.getAttributeCount();
        String[] array = new String[attributeCount];
        for(int x=0; x<attributeCount; x++) {
            StringBuilder stringBuilder = new StringBuilder();
            array[x]= xsr.getAttributeLocalName(x) + "=\"" + xsr.getAttributeValue(x) + "\"";
        }

        // Output the Array
        for(String string : array) {
            System.out.println(string);
        }
    }
    catch(XMLStreamException e)
    {
        logger.error("Error splitting resume XML " , e);
    }

    return rawXML;
}

However this gets an attributeCount of 1 so it's pretty useless. Short of rolling my own completely inefficient method to simply traverse the whole term and cut at the appropirate point I'm at a lost as how to do this. I simply want to be able to pass in a child attribute of the xml and have returned it's tags and value.

I've looked at String functions but they all want an int in which to cut on. Is there no way I could just pass a string?

Community
  • 1
  • 1
Will
  • 8,246
  • 16
  • 60
  • 92

2 Answers2

2

Your XML does not match your code comments. The call to xsr.nextTag() moves you to the <ResDoc> node, which has no attributes and returns a count of 0.

public class Main {

    public static void main(String args[]) {
        try{
            String raw = "<?xml version='1.0' encoding='iso-8859-1'?><ResDoc><resume canonversion='2' dateversion='2' present='735453' xml:space='preserve'>Jack - A Web ResumeHello,My name is Jack.<statements><personal>This website is all about my career, work experience and skill set. Unlike a traditional resume (available here in Word and PDF) my Web Resume is interactive. Feel free to run a query, a great way to see if I would be a good fit for you and your company, or click on any of the blue links for more details and work samples.Just like my career and capabilities, this site is always growing as I add more examples of my work, and even some blog entries or documentation/ tutorials. You will see this site grow as I do!</personal></statements>I want to thank you for stopping by!Resume<experience>Current employer\t2013\tCurrent\t<title>Systems Administrator</title>\t<description>Windows &amp; Altiris administration, SEP &amp; Credant Encryption Management and Policies,EMR Software Dev company\t2012\t2013\tHelpesk Technician II\tOffice 365,Data-Center migration, Corporate image creation\\ configuration, Domain administrationCommunications\t2011\t2012\tSr. Helpesk Technician\tPrimarily managed IT support issues, requests and tickets from local station &amp; east coast.</description><job id='1'><employer>University\t2008</employer>\t2011\t<title>Desktop Technician/ Analyst\tDesktop Support</title>, <description>managing tickets &amp; walk-ins. I.T. support for professors &amp; faculty..</description></job><job id='2'><employer>Emergence Enterprises LLC</employer>\t2006\t<description>2008\tManaging Member &amp; Technology Consultant\t1099 Contractor in City1 and City 2 areas. Computer consultation and support.Hightlights of IT Skills Don't be shy! Please, click the links for work samples!Technical Support\tSystems Deployment Configuration &amp; Upgrading\tScripting packaging and AutomationPowerShell\tVBScript\tBatchAutoIT\tSQL\tSymantec Management Platform AdministrationPatches &amp; Updates\tTraining &amp; Mentoring\tAV management and deploymentVPN\tProxy and Firewall\tDisk Encryption policy and deploymentLAN/WAN Administration\tInventory Solutions\tand More!</description></job></experience>ReferencesRef_1\tSystems Engineer II\tnationwide companyRef_2\tTechnology &amp; Systems Manager\tUniversityRef_3\tInfrastructure Project Manager\tLocal company</resume><skillrollup version='1'>  <canonskill experience='1' expidrefs='2' idrefs='2' name='automation'>    <variant>Automation</variant>  </canonskill>  <canonskill experience='1' expidrefs='2' idrefs='2' name='consulting'>    <variant>Consultant</variant>    <variant>consultation</variant>  </canonskill>  <canonskill experience='1' expidrefs='2' idrefs='2' name='cryptography'>    <variant>Encryption</variant>  </canonskill>  <canonskill experience='1' expidrefs='2' idrefs='2' name='firewalls'>    <variant>Firewall</variant>  </canonskill>  <canonskill experience='1' name='imaging'>    <variant>image</variant>  </canonskill>  <canonskill experience='1' expidrefs='2' idrefs='2' name='inventory management'>    <variant>Inventory</variant>  </canonskill>  <canonskill experience='1' expidrefs='2' idrefs='2' name='lan'>    <variant>LAN</variant>  </canonskill>  <canonskill experience='1' expidrefs='1,2' idrefs='1,2' name='management'>    <variant>Managing</variant>    <variant>managing</variant>  </canonskill>  <canonskill experience='1' expidrefs='2' idrefs='2' name='mentoring'>    <variant>Mentoring</variant>  </canonskill>  <canonskill experience='1' name='microsoft office'>    <variant>Office</variant>  </canonskill>  <canonskill experience='1' name='microsoft windows'>    <variant>Windows</variant>  </canonskill>  <canonskill experience='1' name='migration'>    <variant>migration</variant>  </canonskill>  <canonskill experience='1' expidrefs='2' idrefs='2' name='packaging'>    <variant>packaging</variant>  </canonskill>  <canonskill experience='1' name='policy analysis'>    <variant>Policies</variant>  </canonskill>  <canonskill experience='1' expidrefs='2' idrefs='2' name='proxy server'>    <variant>Proxy</variant>  </canonskill>  <canonskill experience='1' expidrefs='2' idrefs='2' name='shell scripting'>    <variant>Scripting</variant>  </canonskill>  <canonskill experience='1' expidrefs='2' idrefs='2' name='sql'>    <variant>SQL</variant>  </canonskill>  <canonskill experience='1' expidrefs='2' idrefs='2' name='symantec packages'>    <variant>Symantec</variant>  </canonskill>  <canonskill experience='1' expidrefs='2' idrefs='2' name='technical support'>    <variant>Technical Support</variant>  </canonskill>  <canonskill experience='1' name='technician'>    <variant>Technician</variant>    <variant>Technician II</variant>  </canonskill>  <canonskill experience='1' expidrefs='2' idrefs='2' name='upgrades'>    <variant>Upgrading</variant>  </canonskill>  <canonskill experience='1' expidrefs='2' idrefs='2' name='vbscript'>    <variant>VBScript</variant>  </canonskill>  <canonskill experience='1' expidrefs='2' idrefs='2' name='vpn'>    <variant>VPN</variant>  </canonskill>  <canonskill experience='1' expidrefs='2' idrefs='2' name='wan'>    <variant>WAN</variant>  </canonskill></skillrollup></ResDoc>";
            XMLInputFactory xif = XMLInputFactory.newFactory();
            XMLStreamReader xsr = xif.createXMLStreamReader(new StringReader(raw));

            while(xsr.hasNext()){
                xsr.nextTag();
                System.out.println(xsr.getName());
                System.out.println(xsr.getAttributeCount());
            }
        }
        catch(XMLStreamException e)
        {

        }
    }
}

Produces this output

ResDoc
0
resume
4
Romski
  • 1,912
  • 1
  • 12
  • 27
0

I decided to roll this method:

    public static String extractPayload(String a,String tag)   
{  
          if(a=="" || a==null )  
          {  
              return a;  
          }  
          String beginTag="<"+tag,endTag="</"+tag+">";  
          int i,j,l;  
          i=a.indexOf(beginTag);  
          l=endTag.length();  
          j=a.indexOf(endTag);  
          if(i>=0 && i<j)  
          {  
             a=a.substring(i,j+l);  
          }  
          return a;  
}  
Will
  • 8,246
  • 16
  • 60
  • 92