双11狂欢大促

盲盒赢 定制羽绒服

开启惊喜盲盒,抽取你的专属好礼

— 惊喜奖品抢先看 —

急!!急!!!!VTD-XML 解析XML是怎么回事?

sAS112UUUYY111 sAS112UUUYY111 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
下面是用VTD的方式解析下面的xml


public class ParseXmlBase {

public List getObjectFromXml(String FileName, String SelectPath, int count)
throws XPathParseException, XPathEvalException, NavException {
List tablist = new ArrayList();
// 初始化 VTD 执行 触发器
VTDGen vg = new VTDGen();
int i;
// 根据xpath装入xml文件
AutoPilot ap = new AutoPilot();
// SelectPath 如: 根节点/子节点 根据xml的层级设置合适的路径深度
ap.selectXPath(SelectPath);
//SelectPath:"/page/tab"
// 节点位置以单例模式装入记忆坐标
BookMark bm = new BookMark();
// 装入要解析的文件返回是否解析成功
if (vg.parseFile(FileName, false)) {
//This method parses the XML file and returns a boolean indicating if it is successful or not
VTDNav vn = vg.getNav();
bm.bind(vn);
ap.bind(vn);

while ((i = ap.evalXPath()) != -1) {
// 获得tab 节点集
XmlObjectList xolist = new XmlObjectList();
xolist.setName(vn.toString(vn.getAttrVal("name")));
xolist.setReadonly(vn.toString(vn.getAttrVal("readonly")));
xolist.setDesc(vn.toString(vn.getAttrVal("desc")));

// xolist.setTabList(tablist);

bm.recordCursorPosition(); // equivalent to vn.push();
//这个地方很重要不刷新的话第一层就不能全部循环出来。
// get to the first child
XmlFieldObject xfo = new XmlFieldObject();
List xfolist = new ArrayList();
if (vn.toElement(VTDNav.FIRST_CHILD, "field")) {


// 找元素"field"
// int j = vn.getText();
// if (j != -1)

do{
xfo.setName(vn.toString(vn.getAttrVal("name")));
xfo.setReadonly(vn.toString(vn.getAttrVal("readonly")));
xfo.setDesc(vn.toString(vn.getAttrVal("desc")));
xfolist.add(xfo);}while(vn.toElement(VTDNav.NEXT_SIBLING));

}
// 将filelis装载到tab对象
xolist.setTabList(xfolist);
tablist.add(xolist);
bm.setCursorPosition();
}
// 重设xpath
ap.resetXPath();
}
return tablist;
}

public static void main(String[] args) throws XPathParseException,
XPathEvalException, NavException {
// TODO Auto-generated method stub
ParseXmlBase pxb = new ParseXmlBase();
List list = pxb.getObjectFromXml(
"f:/data/tests.xml",
"/page/tab", 1);

}

}






<?xml version="1.0" standalone="yes"?>
<page name="page">
<tab name="tab" readonly="yes" desc="t">
<field name="field1-1" readonly="yes" desc="t">z</field>
<field name="field1-2" readonly="ye" desc="ta">z</field>
</tab>
<tab name="tab" readonly="ye" desc="t">
<field name="field1-3" readonly="yes" desc="t">zhang</field>
<field name="field1-4" readonly="yes" desc="t">explor</field>
</tab>
</page>

--------------------------------------------------------------
我的问题是:如果<tab>中的元素名不同怎么解析?

<?xml version="1.0" standalone="yes"?>
<page name="page">
<tab name="tab" readonly="yes" desc="t">
<field name="field1-1" readonly="yes" desc="t">z</field>
<faaaa name="field1-2" readonly="ye" desc="ta">z</field>
</tab>
<tab name="tab" readonly="ye" desc="t">
<fbbbb name="field1-3" readonly="yes" desc="t">zhang</field>
<fcccc name="field1-4" readonly="yes" desc="t">explor</field>
</tab>
</page>













...全文

相关推荐

vtd-xml XML解析工具

总的来说,VTD-XML是一种强大的XML解析解决方案,它通过独特的VTD技术为开发者提供了更高效、更节省资源的XML处理方式。

空想家

VTD-XML技术深度解析与XML高效处理实战

你有没有遇到过这样的场景?一个 800MB 的交易日志 XML 文件刚被加载,JVM 就开始疯狂 GC,CPU 占用飙到 95%,整个服务卡死——而你只是想从中提取出几百条关键记录。😭 这种“杀鸡用牛刀”的尴尬,在传统 DOM 解析器面前屡见不鲜。但别急着放弃!今天我们要聊的不是那种动辄吃掉几 GB 内存的老古董,而是一个真正为性能而生的技术——。它就像是一把外科手术刀,精准、高效、几乎不留痕迹地切开 XML 文档的每一层结构,却从不复制哪怕一个字节的数据。是不是听起来有点玄乎?

尴尬癌患者

VTD-XML技术解析XML实例

VTD-XML是一种高效、灵活且内存友好的XML处理库,尤其在大型XML文档处理方面表现出色。它是由VTD Tech公司开发的,主要用于XML的导航、解析和操作。

weixin_38669628

vtd-xml vtd-xml vtd-xml

总结起来,VTD-XML是一个强大的XML处理库,它的VTD数据结构和高效解析机制使其在处理大量XML数据时表现出色。

angelzhanmaster

VTD-XML解析软件.zip

VTD-XML是一款高效、低内存占用的XML解析软件,由XimpleWare公司开发,它在处理大型XML文档时表现出显著的优势。

dx0803
评论 5
收藏 已收藏
分享
返回顶部
sAS112UUUYY111
Java SE 62,621 成员 307,251 内容