我希望拆分字符串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 & Altiris administration, SEP & 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 & east coast.</description>\n<job id='1'><employer>University\t2008</employer>\t2011\t<title>Desktop Technician/ Analyst\tDesktop Support</title>, <description>managing tickets & walk-ins. I.T. support for professors & faculty..</description></job>\n<job id='2'><employer>Emergence Enterprises LLC</employer>\t2006\t<description>2008\tManaging Member & 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 & Upgrading\tScripting packaging and Automation\nPowerShell\tVBScript\tBatch\nAutoIT\tSQL\tSymantec Management Platform Administration\nPatches & Updates\tTraining & 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 & 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"
我尝试过使用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;
}
但是这会得到attributeCount
1,所以它很无用。没有滚动我自己完全低效的方法来简单地遍历整个术语,并在适当的点切入我迷失方向如何做到这一点。我只是希望能够传入xml的子属性并返回它的标签和值。
我看过String函数,但是他们都想要一个可以切入的int。我有没有办法传递一个字符串?
答案 0 :(得分:2)
您的XML与您的代码注释不符。对xsr.nextTag()
的调用会将您移至<ResDoc>
节点,该节点没有属性并返回计数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 & Altiris administration, SEP & 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 & east coast.</description><job id='1'><employer>University\t2008</employer>\t2011\t<title>Desktop Technician/ Analyst\tDesktop Support</title>, <description>managing tickets & walk-ins. I.T. support for professors & faculty..</description></job><job id='2'><employer>Emergence Enterprises LLC</employer>\t2006\t<description>2008\tManaging Member & 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 & Upgrading\tScripting packaging and AutomationPowerShell\tVBScript\tBatchAutoIT\tSQL\tSymantec Management Platform AdministrationPatches & Updates\tTraining & 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 & 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)
{
}
}
}
生成此输出
ResDoc
0
resume
4
答案 1 :(得分:0)
我决定推出这种方法:
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;
}