如何将XML标记分配给字符串变量

时间:2014-03-04 19:33:50

标签: java xml eclipse

我想将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码扫描器自动生成,因此我无法修改此标签。

4 个答案:

答案 0 :(得分:2)

您需要转义所有双引号:

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

答案 1 :(得分: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\"/>";

答案 2 :(得分: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对象一样使用它。

答案 3 :(得分: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