最近我开始更多地使用XML,现在我遇到了一个奇怪的问题,我无法在任何地方找到解决方案。你如何从字符事件中读取属性?我将向您展示XML代码和下面的Java代码片段。
XML:
<?xml version="1.0" encoding="UTF-8"?>
<config>
<entity id="Player">
<state>MainMenu</state>
<attr id="health">10</attr>
<attr id="inventory">axe</attr>
<controller>0</controller>
</entity>
</config>
爪哇:
if (event.asStartElement().getName().getLocalPart().equals("attr"))
{
event = eventReader.nextEvent();
System.out.println("Attr: " + event.asCharacters().toString());
System.out.println();
// Iterator<Attribute> attributes = event.asStartElement().getAttributes();
/*while (attributes.hasNext())
{
Attribute attribute = attributes.next();
if (attribute.getName().toString().equals("id"))
{
e.addAttribute(attribute.getValue(), event.asCharacters().getData());
}
}*/
continue;
}
答案 0 :(得分:1)
据我所知,你不能。我认为它甚至没有意义。属性事件不是字符事件,因此您根本无法成功使用asCharacters()
。
您打算选择代表感兴趣元素开头的XMLEvent
,使用asStartElement()
将其视为javax.xml.stream.events.StartElement
,并通过以下任一方式检查其属性StartElement.getAttributeByName()
或StartElement.getAttributes()
。