gpt4 book ai didi

java - 如何在 Java SAX 中解析此 XML?

转载 作者:行者123 更新时间:2023-12-02 00:34:30 25 4
gpt4 key购买 nike

我在java中使用SAX解析器。我不确定:

1) 对于这种情况我需要什么类(class)?我猜我想拥有类(class)(如果我的想法完全错误,请告诉我):-FosterHome(包含家庭和 child 的数组列表)-Family(包含子级的 ArrayList 和父级的字符串)-Child(包含 ChildID 的 ArrayList)

2)startElement和endElement方法中如何处理这种情况

使情况变得复杂的是,ChildID 同时出现在 ChildList 和 RemainingChildList 中。感谢任何可以帮助我的人。

<FosterHome>
<Orphanage>Happy Days Daycare</Orphanage>
<Location>Apple Street</Location>
<Families>
<Family>
<Parent>Adams</ParentID>
<ChildList>
<ChildID>Child1</ChildID>
<ChildID>Child2</ChildID>
</ChildList>
</Family>
<Family>
<Parent>Adams</ParentID>
<ChildList>
<ChildID>Child3</ChildID>
<ChildID>Child4</ChildID>
</ChildList>
</Family>
</Families>
<RemainingChildList>
<ChildID>Child5</ChildID>
<ChildID>Child6</ChildID>
</RemainingChildList>
</FosterHome>

最佳答案

如果你的文档很小,我首先要说的是:不要使用 SAX 解析器,而使用 DOM 解析器。

如果您的文档很大,或者“即时​​”阅读,则使用 SAX 解析器。 SAX 解析器的缺点是您需要负责提出与 XML 等效的代码,因此如果您希望每个元素都在其自己的对象中,则必须自己定义所有这些类。

class FosterHome {
String orphanage;
ArrayList<Family> families = new ArrayList<Family>();
ArrayList<Child> remainingChildren = new ArrayList<Child>();
}

class Family {
String parent;
ArrayList<Child> children = new ArrayList<Child>();
public Family(String _parent) { parent = _parent; }
}

class Child {
String id;
public Child(String _id) { id = _id;}
}

etc.

然后,只要看到开始和结束标记,就为 SAX 事件编写事件处理程序,这些处理程序会跟踪当前打开的元素是什么,在找到对象时向其中添加对象,并在找到结束标记时将其关闭。

这是一件苦差事,但在各个地方都有详细记录,例如 http://totheriver.com/learn/xml/xmltutorial.html

关于java - 如何在 Java SAX 中解析此 XML?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8176590/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com