这是我的XML的一部分:
<MAIN>
<L>
<D>string1 string2 <b>string3</b> string4</D>
</L>
<L>
<D>string5 string6 <b>string7</b> string8 <i>string9</i></D>
</L>
</MAIN>
I want to get the content of all the <D> tags as string. So, the example above should return:
1st iteration: 'string1 string2 <b>string3</b> string4'
2nd iteration: 'string5 string6 <b>string7</b> string8 <i>string9</i>'
etc...
Run Code Online (Sandbox Code Playgroud)
在vtd-xml中,我使用了带有XPath"// L/D"和"// L/D/text()"的AutoPilot,但是没有用.
任何建议或替代方法将不胜感激.
问候
我已经开始在Java中使用VTD(我猜VTD-XML),而XPath读取它非常好.我现在遇到的问题是插入数据.让我们说我正在做以下事情:
VTDNav nav = preExistingGen.getNav();
AutoPilot pilot = new AutoPilot(nav);
pilot.selectXPath("/Something/SomethingElse");
if (pilot.evalXPath() != -1) {
XMLModifier modifier = new XMLModifier(nav);
modifier.insertAfterElement("<some>content</some>");
}
Run Code Online (Sandbox Code Playgroud)
我假设这是一个实时更新,将反映在VTDNav中.它看起来像我的理解是不正确的,因为只需插入元素含量无助于净资产值(如果我输出的VTDNav,它仍包含我的原始XML).我似乎能够处理新xml的唯一方法是从XMLModifier输出它.
modifier.outputAndReparse(); // Gives me a new VTDNav with the new content
Run Code Online (Sandbox Code Playgroud)
这里有什么我想念的吗?有更简单的方法吗?我希望能够插入新内容,然后立即获取新索引.我现有的代码(使用标准DOM类)有大量的插入和更新,我还需要知道文档中最后插入的元素的位置.不必outputAndReparse()每次然后找到插入的元素(我可能甚至无法保证)似乎并不像一个合理的解决方案.
我有一个很大的,非常嵌套的XML文件.所有实体和属性都将成为我的Object变量.我正在创建此类对象的列表.我知道如何使用DOM,SAX和XMLPullParser来做它并且它工作正常但我有VTD解析器的问题.解析后的ListView为空.我把XML文件和我的代码放在下面.也许有人知道我做错了什么.
<MedlineCitationSet>
<MedlineCitation Owner="NLM" Status="MEDLINE">
<PMID Version="1">10540283</PMID>
<DateCreated>
<Year>1999</Year>
<Month>12</Month>
<Day>17</Day>
</DateCreated>
<Article PubModel="Print">
<Journal>
<ISSN IssnType="Print">0950-382X</ISSN>
<JournalIssue CitedMedium="Print">
<Volume>34</Volume>
<Issue>1</Issue>
</JournalIssue>...
Run Code Online (Sandbox Code Playgroud)
我的android代码:
try {
articlesList = new ArrayList<>();
VTDGen vtdGen = new VTDGen();
vtdGen.setDoc(bytes);
vtdGen.parse(false);
AutoPilot ap = new AutoPilot();
VTDNav vtdNav = vtdGen.getNav();
int i = -1;
ap.bind(vtdNav);
ap.selectXPath("/MedlineCitationSet/MedlineCitation");
while ((ap.evalXPath()) != -1) {
articlesList.add(new Article());
String year = null, day = null, month = null;
i++;
if (vtdNav.hasAttr("Owner"))
articlesList.get(i).setOwner(vtdNav.toNormalizedString(vtdNav.getAttrVal("Owner")));
if (vtdNav.hasAttr("Status"))
articlesList.get(i).setStatus(vtdNav.toNormalizedString(vtdNav.getAttrVal("Status")));
vtdNav.push();
AutoPilot ap1 = new …Run Code Online (Sandbox Code Playgroud) 嘿,我正在尝试使用VTD-XML来解析作为String给出的XML,但我找不到如何做到这一点.任何帮助,将不胜感激.
给出以下xml:
<JUT>
<DDT>
<SSG q="textGoal">Lorem ipsum...</SSG>
</DDT>
....
...
</JUT>
Run Code Online (Sandbox Code Playgroud)
我正在使用带有XPath的vtd-xml来检索'textGoal',如下所示:
VTDGen vg = new VTDGen();
vg.setDoc(xmlContent);
vg.parse(false);
VTDNav vn = vg.getNav();
AutoPilot ap = new AutoPilot(vn);
int node = 0;
ap.selectXPath("//SSG[1]/@q");
node = ap.evalXPath();
if(node != -1) {
myString = vn.toString(node);
}
Run Code Online (Sandbox Code Playgroud)
这使得myString为'q'而不是'textGoal'.我有两个问题:
问候
我即将使用VTD-XML(可在http://vtd-xml.sourceforge.net/找到),但我有兴趣获得任何使用该库并有任何意见的实际使用反馈.
在URL(http://vtd-xml.sourceforge.net/)有基准测试,但是如果有人使用了VTD-XML并且有评论,我希望听到它们.速度是应用程序中的关键因素,开发人员在实际使用后的评论是我正在寻找的.
问候,
目前使用Java的内置XML DOM库进行创建/解析.丑陋,即使有很多辅助类和方法,性能和内存使用也很糟糕.
在生成和使用REST服务方面,处理XML的最佳Java工具或框架是什么?
我使用的服务使用JAXB.我能够使用他们的课程,方便,轻松地使用他们的服务.它很漂亮,但在大多数情况下JAXB仍然很痛苦.所以我查看了StAX和VTD-XML.StAX在大约4年内没有更新.VTD-XML是Java中XML处理的最新技术吗?
如何在java或C中使用vtd-xml解析如下所示的xml文件?
<?xml version="1.0" encoding="utf-8"?>
<StockReport>
<Article Code="027783012" Height="35" Width="36" Length="136" TotalPacks="4" AvailablePacks="4" StockReturnPacks="4" BlockedPacks="0" NextExpiryDate="2015-01-17">
<Machine Number="1" TotalPacks="4" AvailablePacks="4" StockReturnPacks="4" BlockedPacks="0" NextExpiryDate="2015-01-17" />
</Article>
<Article Code="025349109" Height="36" Width="37" Length="129" TotalPacks="6" AvailablePacks="6" StockReturnPacks="6" BlockedPacks="0" NextExpiryDate="2015-01-17">
<Machine Number="1" TotalPacks="6" AvailablePacks="6" StockReturnPacks="6" BlockedPacks="0" NextExpiryDate="2015-01-17" />
</Article>
<Article Code="039154327" Height="0" Width="0" Length="0" TotalPacks="0" AvailablePacks="0" StockReturnPacks="0" BlockedPacks="0" NextExpiryDate="" />
<Article Code="932654167" Height="57" Width="99" Length="137" TotalPacks="27" AvailablePacks="27" StockReturnPacks="27" BlockedPacks="0" NextExpiryDate="2014-04-17">
<Machine Number="1" TotalPacks="16" AvailablePacks="16" StockReturnPacks="16" BlockedPacks="0" NextExpiryDate="2015-01-17" />
<Machine Number="2" TotalPacks="11" AvailablePacks="11" StockReturnPacks="11" BlockedPacks="0" NextExpiryDate="2014-04-17" /> …Run Code Online (Sandbox Code Playgroud) 我有以下xml
<test>
<nodeA>
<nodeB>key</nodeB>
<nodeC>value1</nodeC>
</nodeA>
<nodeA>
<nodeB>key</nodeB>
<nodeC>value2</nodeC>
</nodeA>
</test>
Run Code Online (Sandbox Code Playgroud)
如何连接并获取xpath中的所有值/test/nodeA/nodeC?我在这种情况下的预期输出是value1value2
我不确定从我读过的内容可以用xpath,但谢谢你的帮助.
PS:我使用Ximpleware的VTD-XML在Java中解析它.任何基于Java的解决方案也欢迎.目前我的java解决方案只提供第一个值,即value1