Tag: vtd xml

如何保存常量更新,最后将输出保存为XMLModifier文件

我有不同的方法尝试根据路径更新/删除元素/令牌。 现在,每个方法在完成编辑后,立即保存为文件, VTDGen vg = new VTDGen(); vg.parseFile(“input.xml”, false); vn.getNav(); AutoPilot ap = new AutoPilot(vn); XMLModifier xm; public void updateToken(String path) { xm = new XMLModifier(vn); ap.selectXPath(path); …… xm.updateToken(i,”hello”); …… xm.output(“output.xml”); } 如果我继续再次调用此方法,它会保存,但它会用新的更改覆盖文件,我不希望这样,所以我该怎么做? 我也试过用 xm.outputAndReparse(); 我将更新保存回NTDNav vn , NTDNav vn用其余方法,但它会破坏方法移动到节点的其余部分(使用AutoPilot)。 我想要的:调用方法根据路径更新令牌,保存更新,并使用另一个路径再次调用该方法,最后在完成更新后,保存到文件中。 如果我有任何错误,请告诉我,因为我还是VTD-XML的新手。 谢谢。 搞定了,这就是我所做的。 VTDGen vg = new VTDGen(); vg.parseFile(“input.xml”, false); vn.getNav(); AutoPilot ap = […]

修改XML并使用VTD-XML删除旧节点

我有这样的结构: Hotel 1 11111-1 11111-2 Hotel 2 22222-1 22222-2 … 我想修改每个电话号码,使其具有以下结构: 11111-1 我正在提取数字并构建新节点。 但我不知道在什么时候我应该删除旧的Phone1和Phone2节点。 我的代码: VTDGen vg = new VTDGen(); vg.setDoc(bytes); vg.parse(true); VTDNav vn = vg.getNav(); AutoPilot ap = new AutoPilot(vn); String path = “/Hotels/Hotel”; ap.selectXPath(path); List newNodes = new ArrayList(); int count = 0; // first while-loop: extract all numbers and build new nodes […]

如何在VTD Xpath查找上输入名称空间前缀

我正在构建基于VTD的XML解析引擎,以便处理来自多个输入系统的文件。 我目前正在尝试从带有命名空间前缀的标签中获取值: CLIENT NAME 1 并查询以下Xpath: //client/age/text() //client/name/text() 如何设置VTD AutoPilot忽略名称空间前缀? 注意 :我无法更改xpath,因为我已经使用JDK的默认xpath引擎实现了这个引擎。 更新 :请参阅下面我用来测试的代码。 文件类似于顶部的文件: @Test public void doFile() throws Exception { byte[] xmlData = FileUtils.loadFile(“namespace-test.xml”); VTDGen gen = new VTDGen(); gen.setDoc(xmlData); gen.parse(false); VTDNav vtd = gen.getNav(); AutoPilot pilot = new AutoPilot(vtd); pilot.selectXPath(“//clients”); int re = pilot.evalXPath(); System.out.println(re); if (re >= 0) { System.out.println(vtd.toString(re)); } […]

VTD-XML似乎破坏了XML文档中的转义字符串

我正在研究一个XML数据集( 此处提供的DrugBank数据库),其中一些字段包含转义的XML字符,如“&”等。 为了使问题更具体,这是一个示例场景: DB00001 # Askari AT, Lincoff AM: Antithrombotic Drug Therapy in Cardiovascular Disease. 2009 Oct; pp. 440–. ISBN 9781603272346. “Google books”:http://books.google.com/books?id=iadLoXoQkWEC&pg=PA440. . … … 由于整个文档很大,我解析如下: VTDGen gen = new VTDGen(); try { gen.setDoc(Files.readAllBytes(DRUGBANK_XML)); gen.parse(true); } catch (IOException | ParseException e) { SystemHelper.exitWithMessage(e, “Unable to process Drugbank XML data. Aborting.”); } VTDNav nav = […]

如何使用ximpleware在XML中获取Inner数组子元素

AutoPilot searchProperties = new AutoPilot(); searchProperties.selectXPath(“/BatchItemSearchResultAnswer/Result/SearchProperties/Content/Item”); searchProperties.bind(nav); searchPro searchOption = new searchPro(); while (searchProperties.evalXPath() != -1) { //reuser name.resetXPath(); name.selectXPath(“Name”); searchOption.id = Id.evalXPathToString(); searchOption.name = name.evalXPathToString(); Log.e(“SearchId”, Id.evalXPathToString()); Log.e(“SearchName”, name.evalXPathToString()); Image.resetXPath(); Image.selectXPath(“/BatchItemSearchResultAnswer/Result/SearchProperties/Content/Item/Values/PropertyValue”); searchOption.propertyList = new ArrayList(); while (Image.evalXPath() != -1) { property pro = new Property(); pro.id = Id.evalXPathToString(); Log.e(“SearchPId”, Id.evalXPathToString()); Log.e(“SearchPName”, name.evalXPathToString()); searchOption.propertyList.add(pro); } […]

使用vtd-xml解析xml文件

如何在java或C中使用vtd-xml解析如下所示的xml文件? 任何帮助,将不胜感激。 谢谢