我正在寻找像dom4j这样的东西,但没有dom4j的瑕疵,例如文档不好或丢失,看似停滞的开发状态.
背景:我一直在使用和 提倡 dom4j,但是我觉得它并不完全正确,因为我知道这个库远非最佳(例如:看看XSLT相关样式表类中的方法是如何记录的;你会传递什么来运行( )作为String mode参数?)
要求:与使用 纯JDK(javax.xml和org.w3c.dom包)时相比,库应该使基本的XML处理更容易.这样的事情:
我真的很喜欢dom4j所承诺的,实际上:" 易于使用的开源库,用于处理XML,XPath和XSLT [...],完全支持DOM,SAX和JAXP. "即将推出的dom4j 2.0确实声称能解决所有问题:充分利用Java 5并添加缺少的文档.但不幸的是,如果你仔细观察:
警告:dom4j 2.0处于pre-alpha阶段.它很可能无法编译.如果它可以随机编译,很可能无法运行.如果它偶尔运行,它可能会突然爆炸.如果要使用dom4j,则需要1.6.1版.真.
......并且网站已经说了很长时间了.那么有没有一个很好的替代dom4j?请为您的首选库提供一些理由,而不是仅仅转储名称和链接.:-)
目前,我们的Java应用程序使用制表符分隔的*.cfg文件中保存的值.我们需要更改此应用程序,以便它现在使用XML文件.
为了从这个文件中读取值,最好/最简单的库是什么?
我正在尝试编写一个帮助我创建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对象.你觉得怎么样?
给定字符串"<table><tr><td>Hello World!</td></tr></table>",获取DOM元素代表它的(最简单)方法是什么?
我有一个示例XML文件,如下所示:
<?xml version="1.0"?>
<h:html xmlns="http://www.w3.org/2002/xforms" xmlns:ev="http://www.w3.org/2001/xml-events" xmlns:h="http://www.w3.org/1999/xhtml" xmlns:jr="http://openrosa.org/javarosa" xmlns:orx="http://openrosa.org/xforms/" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<h:head>
<h:title>tutorial</h:title>
<model>
<instance>
<tutorial id="tutorial">
<name/>
<age/>
<gender/>
<photo/>
<date/>
<location/>
<thanks/>
<start/>
<end/>
<today/>
<deviceid/>
<subscriberid/>
<simserial/>
<phonenumber/>
<meta>
<instanceID/>
</meta>
</tutorial>
</instance>
<bind nodeset="/tutorial/name" required="true()" type="string"/>
<bind constraint=". > 0 and . < 120" jr:constraintMsg="That's not a valid age!" nodeset="/tutorial/age" required="true()" type="int"/>
<bind nodeset="/tutorial/gender" type="select1"/>
<bind nodeset="/tutorial/photo" type="binary"/>
<bind nodeset="/tutorial/date" type="date"/>
<bind nodeset="/tutorial/location" type="geopoint"/>
<bind nodeset="/tutorial/thanks" readonly="true()" type="string"/>
<bind jr:preload="timestamp" jr:preloadParams="start" nodeset="/tutorial/start" type="dateTime"/>
<bind jr:preload="timestamp" jr:preloadParams="end" nodeset="/tutorial/end" …Run Code Online (Sandbox Code Playgroud) 我使用REST,我想知道我是否可以告诉jaxb将字符串字段"as-it-is"插入到传出的xml中.当然我会在返回之前将其解包,但我想保存这一步.
@XmlRootElement(name="unnestedResponse")
public class Response{
@Insert annotation here ;-)
private String alreadyXml;
private int otherDate; ...
}
Run Code Online (Sandbox Code Playgroud)
是否有可能告诉JAXB只使用String而不是转义?我希望客户端不必解析我的响应,然后解析此字段.
问候,m