Java-解析带有变量标记名的xml字符串?
我试图解析一个XML字符串,标记名是可变的;我没有看到任何关于如何在不知情的情况下提取信息的例子。例如,我总是知道下面的Java-解析带有变量标记名的xml字符串?,java,xml,android-2.2-froyo,Java,Xml,Android 2.2 Froyo,我试图解析一个XML字符串,标记名是可变的;我没有看到任何关于如何在不知情的情况下提取信息的例子。例如,我总是知道下面的和标记,但它们的内部/外部可能是从到您命名的任何东西 <?xml version="1.0" encoding="UTF-8"?> <response> <generic> .... </generic> <data>
和
标记,但它们的内部/外部可能是从
到您命名的任何东西
<?xml version="1.0" encoding="UTF-8"?>
<response>
<generic>
....
</generic>
<data>
<employee>
<name>Seagull</name>
<id>3674</id>
<age>34</age>
</employee>
<employee>
<name>Robin</name>
<id>3675</id>
<age>25</age>
</employee>
</data>
</response>
....
海鸥
3674
34
罗宾
3675
25
您可以将其解析为通用dom对象并遍历它。例如,您可以使用来执行此操作
从dom4j快速入门指南:
public void treeWalk(Document document) {
treeWalk( document.getRootElement() );
}
public void treeWalk(Element element) {
for ( int i = 0, size = element.nodeCount(); i < size; i++ ) {
Node node = element.node(i);
if ( node instanceof Element ) {
treeWalk( (Element) node );
}
else {
// do something....
}
}
}
public Document parse(URL url) throws DocumentException {
SAXReader reader = new SAXReader();
Document document = reader.read(url);
return document;
}
publicsvoidtreewalk(文档){
treeWalk(document.getRootElement());
}
公共空树丛(元素){
for(int i=0,size=element.nodeCount();i
我在项目中也看到过类似的情况
如果要处理大型XML,可以使用Stax或Sax解析器读取XML。在每个步骤中(如到达结束元素时),将数据输入到您选择的映射或dta结构中,在映射中保留标记名作为键,值作为值。最后,解析完成后,使用此映射确定要构建哪个对象,因为最终您将拥有XML中信息的正确实体表示
如果XML很小,则使用DOM并通过读取特定标记直接构建实体对象(如employee>或使用XPATh指向您希望标记出现的位置,为您提供实体的提示。通过读取XML中的特定信息直接构建该对象。如果您不知道标记名是什么,您打算如何有意义地处理它们?您只是要将XML传递给其他应用程序吗?具体是什么你是说“解析”吗?我得到了很多不同的响应;我不想要硬编码的格式,而是一个不需要根据响应名称的更改进行更新的处理类。