2014-03-04 59 views
0

我想XML标签内容分配给字符串: -如何将XML标签分配给一个字符串变量

String str= 
" 
<?xml version="1.0" encoding="UTF-8"?> 
<PrintLetterBarcodeData uid="s3434343" name="sdsdasdasd" gender="M" yob="1991" co="S/sdsds" street="sdsdsdl605"/> 
"; 

但也有一些错误。 我正在使用eclipse。 该标签由QR码扫描仪自动生成,因此我无法修改此标签。

回答

2

你需要逃避所有的双引号:

String str="<?xml version=\"1.0\" encoding=\"UTF-8\"?> <PrintLetterBarcodeData uid=\"s3434343\" name=\"sdsdasdasd\" gender=\"M\" yob=\"1991\" co=\"S/sdsds\" street=\"sdsdsdl605\"/>"; 
+0

我正在开发一个程序,它从QR码中提取XML数据,存储在字符串变量中,检索ID和名称并存储在数据库中。 因此,XML代码无法手动编辑 –

+1

您的问题不是关于在运行时从某处读取的XML标记,而是有关在源代码中以字符串文字编写的XML。这个答案告诉你如何在Java源代码中正确编写带有嵌入引号字符的字符串文字。 – Wyzard

+0

我同意@Wyzard。当你在运行时处理某些东西时,你没有这些问题。 –

1

什么是错误?在不知道错误的情况下很难诊断它。但是,我可以说在XML字符串中引号之前需要一个\字符。

这将是

String str= "<?xml version=\"1.0\" encoding=\"UTF-8\"?><PrintLetterBarcodeData uid=\"s3434343\" name=\"sdsdasdasd\" gender=\"M\" yob=\"1991\" co=\"S/sdsds\" street=\"sdsdsdl605\"/>"; 
+0

令牌上的语法错误,删除这些令牌 –

0

你怎么把文成日食,粘贴剪贴板? 在这种情况下,请尝试Preferences/Java/Editor/Typing/ "Escape text when pasting into a string literal"。 如果您从其他来源读取字符串,您可以尝试使用http://commons.apache.org/proper/commons-lang/javadocs/api-2.6/org/apache/commons/lang/StringEscapeUtils.html

1

要获取数据的值,您应该使用某种xml解析器。

自从Java 1.6,你可以使用JAXB此任务:

@XmlRootElement(name = "PrintLetterBarcodeData") 
@XmlAccessorType(XmlAccessType.FIELD) 
public class PrintLetterBarcodeData 
{ 
    enum Gender 
    { 
     M, F 
    } 

    @XmlAttribute 
    String uid; 
    @XmlAttribute 
    String name; 
    @XmlAttribute 
    Gender gender; 
    @XmlAttribute(name = "yob") 
    int yearOfBirth; 
    @XmlAttribute 
    String co; 
    @XmlAttribute 
    String street; 

    // getters/setters omitted for readability, these should be used in production code 
} 

private static PrintLetterBarcodeData parse(String xml) throws JAXBException 
{ 
    Unmarshaller unmarshaller = JAXBContext.newInstance(PrintLetterBarcodeData.class).createUnmarshaller(); 

    return (PrintLetterBarcodeData) unmarshaller.unmarshal(new StringReader(xml)); 
} 

private static void sample() throws JAXBException 
{ 
    String str = "<?xml version=\"1.0\" encoding=\"UTF-8\"?> <PrintLetterBarcodeData uid=\"s3434343\" name=\"sdsdasdasd\" gender=\"M\" yob=\"1991\" co=\"S/sdsds\" street=\"sdsdsdl605\"/>"; 

    PrintLetterBarcodeData barcodeData = parse(str); 

    System.out.println(barcodeData.uid); 
    System.out.println(barcodeData.name); 
    System.out.println(barcodeData.gender); 
    System.out.println(barcodeData.yearOfBirth); 
    System.out.println(barcodeData.co); 
    System.out.println(barcodeData.street); 
} 

然后你可以使用它像任何普通Java对象。

相关问题