2014-03-04 150 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對象。

相關問題