gpt4 book ai didi

java - 将 XML 字符串拆分为属性

转载 作者:行者123 更新时间:2023-12-02 05:34:14 26 4
gpt4 key购买 nike

我希望拆分字符串 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" 

我尝试使用 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 的子属性并返回它的标签和值。

我研究过字符串函数,但它们都需要一个 int 来切入。有没有办法只传递一个字符串?

最佳答案

您的 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 &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)
{

}
}
}

产生此输出

ResDoc
0
resume
4

关于java - 将 XML 字符串拆分为属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25172233/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com