我正在尝试编写一个帮助我创建XML对象的代码.例如,我将给一个字符串作为函数的输入,它将返回一个XMLObject.
XMLObject convertToXML(String s) {}
Run Code Online (Sandbox Code Playgroud)
当我在网上搜索时,通常我会看到有关创建XML文档的示例.所以我看到的关于创建XML并写入文件并创建文件的所有内容.但我做了类似的事情:
Document document = new Document();
Element child = new Element("snmp");
child.addContent(new Element("snmpType").setText("snmpget"));
child.addContent(new Element("IpAdress").setText("127.0.0.1"));
child.addContent(new Element("OID").setText("1.3.6.1.2.1.1.3.0"));
document.setContent(child);
Run Code Online (Sandbox Code Playgroud)
您认为创建XML对象是否足够?还能帮助我如何从XML获取数据吗?例如,我如何IpAdress从XML获取?
非常感谢你们
编辑1:实际上现在我觉得我可能会更容易拥有一个像这样的文件base.xml,我会把所有基本的东西写进去,例如:
<snmp>
<snmpType><snmpType>
<OID></OID>
</snmp>
Run Code Online (Sandbox Code Playgroud)
然后使用此文件创建XML对象.你觉得怎么样?
如何在Java中将org.jdom.Document转换为String?
我应该为XPath使用什么包?我想要查询元素,然后在这些节点周围提取一些值.也许一个或多个级别更高,一些属性.
javax.xml.xpath是XPath 1.0.是javax.xml.xpath和org.w3c.dom正确的方式,还是有更现代的实施?org.w3c.dom非常尴尬,JDOM似乎更容易.
我维护JDOM项目,我试图在Android上'认证'它.大多数工作都很好,但XML Schema验证证明是有问题的......
我的问题是:有没有办法在Android上进行XMLSchema验证?如果有,怎么样?
之前曾有人问过这样的问题,但没有给出确凿的答案:
这就是我目前所知道的(如果我错了,请纠正我)......:
我一直在研究这个问题已经有一段时间了,我已经整理了以下"研究":
如果有人在Android上有关于XMLSchema验证的任何更多信息,我将非常感谢任何输入.
如果有人成功地对XML进行了XMLSchema验证并且可以帮助我获得适用于JDOM的功能,那么他们将获得数千个互联网点... ;-)并将在JDOM代码中永生化并提交消息.
我想使用JDOM读取XML文件,然后使用XPath从JDOM文档中提取数据.它创建了Document对象,但是当我使用XPath查询Document的元素列表时,我什么也得不到.
我的XML文档在根元素中定义了一个默认命名空间.有趣的是,当我删除默认命名空间时,它成功运行XPath查询并返回我想要的元素.还有什么办法让我的XPath查询返回结果?
XML:
<?xml version="1.0" encoding="UTF-8"?>
<collection xmlns="http://www.foo.com">
<dvd id="A">
<title>Lord of the Rings: The Fellowship of the Ring</title>
<length>178</length>
<actor>Ian Holm</actor>
<actor>Elijah Wood</actor>
<actor>Ian McKellen</actor>
</dvd>
<dvd id="B">
<title>The Matrix</title>
<length>136</length>
<actor>Keanu Reeves</actor>
<actor>Laurence Fishburne</actor>
</dvd>
</collection>
Run Code Online (Sandbox Code Playgroud)
Java的:
public static void main(String args[]) throws Exception {
SAXBuilder builder = new SAXBuilder();
Document d = builder.build("xpath.xml");
XPath xpath = XPath.newInstance("collection/dvd");
xpath.addNamespace(d.getRootElement().getNamespace());
System.out.println(xpath.selectNodes(d));
}
Run Code Online (Sandbox Code Playgroud) 在scala中使用哪种最简单的API来对文档执行以下XPath查询?
//s:Annotation[@type='attitude']/s:Content/s:Parameter[@role='type' and not(text())]
//s:Annotation[s:Content/s:Parameter[@role='id' and not(text())]]/@type
Run Code Online (Sandbox Code Playgroud)
(s被定义为特定命名空间的昵称)
我在Scala的XML库上找到的唯一文档没有关于执行复杂的真实XPath查询的信息.
我曾经为此目的喜欢JDOM(在Java中),但由于JDOM不支持泛型,因此在Scala中使用会很痛苦.(Java的其他XML库在Java中往往更加痛苦,但我承认我不了解真实情况.)
我有一个XML文件,我知道我需要更改其值的节点名称.
节点名是ipAddress.
我可以使用JDOM,获取文档,获取节点并更改值并编写它,或者我可以编写XSLT文件.
代码更改值来自Java,所以我的问题是哪个选项更好?XML文件的大小可以不同.
另一个与XSLT相关的问题:是否有可能编写一个XSLT文件,这样我就不会列出所有XML格式的节点,只会指定类似的节点if node == ipAddress,然后获取新值,以及如何从Java应用XSLT转换?
谢谢.
如何将具有XML格式内容的String转换为JDom文档.
我正在尝试下面的代码:
String docString = txtEditor.getDocumentProvider().getDocument(
txtEditor.getEditorInput()).get();
SAXBuilder sb= new SAXBuilder();
doc = sb.build(new StringReader(docString));
Run Code Online (Sandbox Code Playgroud)
任何人都可以帮我解决上述问题.提前致谢!!
我是Hadoop框架的新手.我试图编写一个从hdfs读取XML文件的程序,使用JDOM解析它并将其发送到数据库.以下是Java文件
package JDOMprs;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.conf.Configured;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.DoubleWritable;
import org.apache.hadoop.io.LongWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.Mapper;
import org.apache.hadoop.mapreduce.Reducer;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.util.Tool;
import org.apache.hadoop.util.ToolRunner;
import org.jdom2.Document;
import org.jdom2.Element;
import org.jdom2.JDOMException;
import org.jdom2.input.SAXBuilder;
import com.vertica.hadoop.VerticaOutputFormat;
import com.vertica.hadoop.VerticaRecord;
public class ExampleParser extends Configured implements Tool {
public static class Map extends Mapper<LongWritable, Text, Text, DoubleWritable> {
private final static DoubleWritable one = new DoubleWritable(1);
private Text word = new Text();
private List mylist; …Run Code Online (Sandbox Code Playgroud) 我正在Eclipse中开发一个GWT应用程序并使用jdom2来读取一些自定义的xml属性文件.
在最近的更新之后,我的应用程序现在在尝试读取xml文件时失败并出现上述错误.相关的堆栈跟踪是:
org.apache.xerces.parsers.XIncludeAwareParserConfiguration cannot be cast to org.apache.xerces.xni.parser.XMLParserConfiguration
org.apache.xerces.parsers.SAXParser.<init>(Unknown Source)
org.apache.xerces.parsers.SAXParser.<init>(Unknown Source)
org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.<init>(Unknown Source)
org.apache.xerces.jaxp.SAXParserImpl.<init>(Unknown Source)
org.apache.xerces.jaxp.SAXParserFactoryImpl.newSAXParser(Unknown Source)
org.jdom2.input.sax.XMLReaders.createXMLReader(XMLReaders.java:165)
org.jdom2.input.SAXBuilder.createParser(SAXBuilder.java:871)
org.jdom2.input.SAXBuilder.buildEngine(SAXBuilder.java:854)
org.jdom2.input.SAXBuilder.getEngine(SAXBuilder.java:904)
org.jdom2.input.SAXBuilder.build(SAXBuilder.java:1116)
uk.co.platosys.db.jdbc.DatabaseProperties.loadProperties(DatabaseProperties.java:78)
Run Code Online (Sandbox Code Playgroud)
研究此问题表明,当类路径上存在不兼容的xerces jar版本时,可能会出现错误.
gwt-dev-2.6.1.jar包含xerces包,我的预感是这个最新版本的gwt-dev捆绑了一个不兼容的版本.然而,当前版本的jdom2.0.5与2.11版本的Xerces一起发布,这似乎是Apache最新发布的版本.将这些罐子放在我的类路径上似乎无法解决问题; 我以前能够依赖gwt-dev中的版本.
我宁愿在这方面做到这一点,而且远远超出了我的舒适区.