2011-03-28 156 views
0

有没有人做过任何类型的XML配对,其名称中有破折号的元素?我不认为它有可能,有什么想法?Java XML解析标准

<Person-Response> 
    <First-Name> 3119043033121014002</First-Name> 
    <Last-Name> 3119043033121014002</Last-Name> 
</Person-Response> 

回答

2

如果这是关于XML到Java的映射,然后JAXB可以处理它questin:

 
@XmlRootElement(name = "Person-Response") 
public class PersonResponse { 
    @XmlElement(name = "First-Name") 
    String firstName; 
    @XmlElement(name = "Last-Name") 
    String lastName; 
} 
+0

嗨,诺尔曼,我得到一个XML字符串,我需要把它变成你上面概述的实体。我不知道如何使用JAXB将XML字符串转换为没有模式的对象。你有没有一个例子可以做到这一点?感谢您的帮助,非常感谢! – c12 2011-03-28 11:56:26

+0

研究javax.xml.bind.JAXBContext的文档。您可以参考一组注释类创建一个JAXBContext,然后从该上下文创建一个Unmarshaller。 – 2011-03-28 12:07:34

2

这是合法的XML;任何兼容的解析器应该没有问题。

+0

这是,事实上,不合法的。注意结束标签中的尾部't',这可能是问题的根源。 – 2011-03-28 11:41:07

+0

't'是我的拼写错误... – c12 2011-03-28 11:45:51

0

因为破折号不应该有任何问题。但它是一个无效的XML按照由每诺曼

+0

你会如何解析这样的东西到一个Java对象并获​​取值? – c12 2011-03-28 11:45:24

3

关于破折号提到的原因,看到官方XML recommendation of the W3C:鼓励

文档作者使用 名这是有意义的单词或单词的 组合在自然语言中使用 ,并避免在名称中使用符号或 空格字符。注意 COLON,HYPHEN-MINUS,FULL STOP (句点),LOW LINE(下划线)和 MIDDLE DOT是明确允许的。

0

这是一个合法的XML,任何解析器都可以解析它。

关于Java,您可以通过JAXP API支持在DOM,SAX或StAX中解析此XML。