Java XML属性

Java XML属性,java,xml,Java,Xml,最近我开始更多地使用XML,现在我陷入了一个奇怪的问题,我在任何地方都找不到解决方案。如何从中的characters事件中读取属性?下面我将向您展示XML代码和Java代码片段 XML: 主菜单 10 斧头 0 爪哇: if(event.asStartElement().getName().getLocalPart().equals(“attr”)) { event=eventReader.nextEvent(); System.out.println(“Attr:+event.asChar

最近我开始更多地使用XML,现在我陷入了一个奇怪的问题,我在任何地方都找不到解决方案。如何从中的characters事件中读取属性?下面我将向您展示XML代码和Java代码片段

XML:


主菜单
10
斧头
0
爪哇:

if(event.asStartElement().getName().getLocalPart().equals(“attr”))
{
event=eventReader.nextEvent();
System.out.println(“Attr:+event.asCharacters().toString());
System.out.println();
//迭代器属性=event.asStartElement().getAttributes();
/*while(attributes.hasNext())
{
Attribute=attributes.next();
if(attribute.getName().toString().equals(“id”))
{
e、 addAttribute(attribute.getValue(),event.asCharacters().getData());
}
}*/
继续;
}

据我所知,你不能。我不认为这有什么意义。属性事件不是角色事件,因此您根本不能成功地对其使用
asCharacters()

您需要选择表示感兴趣的元素开始的
XMLEvent
,使用
asstarteelement()
javax.xml.stream.events.StartElement
的形式查看它,并通过
StartElement.getAttributeByName()
StartElement.getAttributes()检查它的属性

看起来像是复制的?
<?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;
}