给定以下场景,其中 xml、Geography.xml 看起来像 -
<Geography xmlns:ns="some valid namespace">
<Country>
<Region>
<State>
<City>
<Name></Name>
<Population></Population>
</City>
</State>
</Region>
</Country>
</Geography>
Run Code Online (Sandbox Code Playgroud)
以及以下示例 java 代码 -
InputStream is = new FileInputStream("C:\\Geography.xml");
SAXBuilder saxBuilder = new SAXBuilder();
Document doc = saxBuilder.build(is);
XPath xpath = XPath.newInstance("/*/Country/Region/State/City");
Element el = (Element) xpath.selectSingleNode(doc);
boolean b = doc.removeContent(el);
Run Code Online (Sandbox Code Playgroud)
该removeContent()方法不会City从 的内容列表中删除该元素doc。b 的值是false
我不明白为什么它不删除 Element,我什至尝试从 xml 中删除Name&元素只是为了看看这是否是问题,但显然不是。
我尝试的另一种方法,我不知道为什么我知道它没有本质上的不同,仍然只是为了使用- PopulationParent
Parent p = el.getParent();
boolean s = p.removeContent(new Element("City"));
Run Code Online (Sandbox Code Playgroud)
可能是什么问题?以及可能的解决方案?如果有人可以分享该方法的真实行为removeContent() …
我正在做一个关于html文档操作的项目.我希望现有的html文档中的正文内容将其修改为新的html.现在我正在使用JDOM.我想在我的编码中使用body元素.因为我在编码中使用了getChild("body").但它将null返回给我的program.But我的html文档有一个body元素.可以有人帮我知道这个问题我是学生?
会很感激指针..
编码:
import org.jdom.Document;
import org.jdom.Element;
public static void getBody() {
SAXBuilder builder = new SAXBuilder("org.ccil.cowan.tagsoup.Parser", true);
org.jdom.Document jdomDocument=builder.build("http://www......com");
Element root = jdomDocument.getRootElement();
//It returns null
System.out.println(root.getChild("body"));
}
Run Code Online (Sandbox Code Playgroud)
请参考这些..我的html的root和childs在控制台中打印...
root.getName():html
SIZE:2
[Element: <head [Namespace: http://www.w3.org/1999/xhtml]/>]
[Element: <body [Namespace: http://www.w3.org/1999/xhtml]/>]
Run Code Online (Sandbox Code Playgroud) 我是JDom的新手,我尝试使用XPath来访问我的xml文件.我的代码如下:
public static void main(String[] args) throws Exception {
Document doc = new SAXBuilder().build("file.xml");
XPath x = XPath.newInstance("xpath");
//select the first element in the nodeset
Element elem = (Element)x.selectSingleNode(doc);
......
}
Run Code Online (Sandbox Code Playgroud)
我已经导入了org.jdom.xpath.XPath类.当我使用javac编译类时,它没有给出任何错误,但是当我尝试运行程序时,它会给出以下异常消息:
Exception in thread "main" java.lang.NoClassDefFoundError: org/jaxen/NamespaceContext
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:169)
at org.jdom.xpath.XPath.newInstance(XPath.java:134)
at myclassname.main(xmlTohtml.java:18)
Caused by: java.lang.ClassNotFoundException: org.jaxen.NamespaceContext
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:276)
at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
... 4 more
Run Code Online (Sandbox Code Playgroud)
我在这里错过了什么吗?任何帮助将不胜感激!
我在我的.cshrc文件中添加了jaxen和dom4j,该文件直接位于我的主目录下,并且两个jar文件也在同一目录中.
setenv CLASSPATH ${CLASSPATH}:/homedirectory/jaxen-1.1.1.jar
setenv CLASSPATH ${CLASSPATH}:/homedirectory/dom4j-1.6.1.jar
Run Code Online (Sandbox Code Playgroud)
当我从命令行尝试此命令时,它会生成新的异常....
Exception in …Run Code Online (Sandbox Code Playgroud) 我正在使用带有SAXBuilder的JDOM来解析XML文件,我遇到了一个抛出此错误的文件的问题:
java.net.MalformedURLException: unknown protocol: c
at java.net.URL.<init>(URL.java:574)
at java.net.URL.<init>(URL.java:464)
at java.net.URL.<init>(URL.java:413)
at org.apache.xerces.impl.XMLEntityManager.setupCurrentEntity(Unknown Source)
at org.apache.xerces.impl.XMLVersionDetector.determineDocVersion(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
at org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
at org.jdom.input.SAXBuilder.build(SAXBuilder.java:518)
at org.jdom.input.SAXBuilder.build(SAXBuilder.java:986)
at com.foo.moo.MyClass.getValues(MyClass.java:321)
Run Code Online (Sandbox Code Playgroud)
这条线是:
Document document = null;
document = sxb.build(files.elementAt(i)); // This one
Run Code Online (Sandbox Code Playgroud)
在对互联网进行一些研究后,我认为该错误与Java 1.6有关.
你怎么看 ?

jdom库在那里,我已经删除并一次又一次地添加到构建路径.而且,我已多次清理该项目.但我仍然得到这个错误:
04-27 10:51:27.867: W/ActivityThread(530): Application com.pkg.src.nhs.glos is waiting for the debugger on port 8100...
04-27 10:51:27.936: I/System.out(530): Sending WAIT chunk
04-27 10:51:29.396: I/dalvikvm(530): Debugger is active
04-27 10:51:29.736: I/System.out(530): Debugger has connected
04-27 10:51:29.746: I/System.out(530): waiting for debugger to settle...
04-27 10:51:29.996: I/System.out(530): waiting for debugger to settle...
04-27 10:51:30.262: I/System.out(530): waiting for debugger to settle...
04-27 10:51:30.479: I/System.out(530): waiting for debugger to settle...
04-27 10:51:30.689: I/System.out(530): waiting for debugger to settle...
04-27 10:51:30.896: I/System.out(530): waiting for debugger to settle... …Run Code Online (Sandbox Code Playgroud) 我有使用utf-8和JDOM解析器的问题.我的代码不会用utf-8编写.这是代码:
import java.io.FileWriter;
import java.io.IOException;
import org.jdom2.Element;
import org.jdom2.output.Format;
import org.jdom2.output.XMLOutputter;
import org.jdom2.Document;
import org.jdom2.JDOMException;
import org.jdom2.input.SAXBuilder;
public class Jdom2 {
public static void main(String[] args) throws JDOMException, IOException {
String textValue = null;
try {
SAXBuilder sax = new SAXBuilder();
Document doc = sax.build("path/to/file.xml");
Element rootNode = doc.getRootElement();
Element application = rootNode.getChild("application");
Element de_DE = application.getChild("de_DE");
textValue = de_DE.getText();
System.out.println(textValue);
application.getChild("de_DE").setText(textValue);
Format format = Format.getPrettyFormat();
format.setEncoding("UTF-8");
XMLOutputter xmlOutput = new XMLOutputter(format);
xmlOutput.output(doc, new FileWriter("path/to/file.xml"));
}catch (IOException io) {
io.printStackTrace(); …Run Code Online (Sandbox Code Playgroud) 我有一个 xml 结构如下:
<rurl modify="0" children="yes" index="8" name="R-URL">
<status>enabled</status>
<rurl-link priority="3">http</rurl-link>
<rurl-link priority="5">http://localhost:80</rurl-link>
<rurl-link priority="4">abc</rurl-link>
<rurl-link priority="3">b</rurl-link>
<rurl-link priority="2">a</rurl-link>
<rurl-link priority="1">newlinkkkkkkk</rurl-link>
</rurl>
Run Code Online (Sandbox Code Playgroud)
现在,我想删除一个子节点,其中 text 等于 http。目前我正在使用此代码:
while(subchilditr.hasNext()){
Element subchild = (Element)subchilditr.next();
if (subchild.getText().equalsIgnoreCase(text)) {
message = subchild.getText();
update = "Success";
subchild.removeAttribute("priority");
subchild.removeContent();
}
Run Code Online (Sandbox Code Playgroud)
但它并没有完全从 xml 文件中删除子元素。它留给我
<rurl-link/>
Run Code Online (Sandbox Code Playgroud)
有什么建议?
我目前正在使用本机Java XML处理库(Xerces).我不能使用任何sax解析器,因为我需要随机访问xml节点.当我解析XML文件时,我发现CPU使用率达到100%.我正在处理大量小尺寸(1-10kb) -
while(hasFile){
processXMlfile(hasFile.next);
}
Run Code Online (Sandbox Code Playgroud)
在processXMlfile()中,我正在构建解析和处理文件.
如果我转到JDOM库,我会获得任何性能优势吗?
我有xml文件
<?xml version="1.0" encoding="UTF-8"?>
<products xmlns="http://www.myapp.com/shop" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.myapp.com/shop shop.xsd">
<category name="yyy">
<subcategory name="yyy1">
<goods name="yyy11">
<model>ferrari</model>
</goods>
</subcategory>
</category>
</products>
Run Code Online (Sandbox Code Playgroud)
我试图让元素的值<model>作为
SAXBuilder builder = new SAXBuilder();
File xmlProductFile = new File("shop.xml");
Document document = builder.build(xmlProductFile);
Element rootNode = document.getRootElement();
String category = rootNode.getChild("model").getText();
Run Code Online (Sandbox Code Playgroud)
但我得到空值
大家好,目前正在开发一个需要解析 xml 文档以便对用户进行身份验证的应用程序。我使用 java.net.* 包的 URLConnection 类连接到特定的 URL,该 URL 以 xml 格式返回其响应。当我尝试使用 jdom 解析文档时,出现以下错误:
org.jdom2.input.JDOMParseException: Error on line 1: Premature end of file
任何人都可以查明问题并帮助我采取补救措施吗?谢谢,这是我的代码的一部分
try {
String ivyString = "http://kabugi.hereiam.com/?username=" + ivyUsername + "&password=" + ivyPassword;
URL authenticateURL = new URL(ivyString);
URLConnection ivyConnection = authenticateURL.openConnection();
HttpURLConnection ivyHttp = (HttpURLConnection) ivyConnection;
System.out.println("Response code ==>" + ivyHttp.getResponseCode());
if (ivyHttp.getResponseCode() != 200) {
ctx.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Invalid username or password!", ""));
page = "confirm.xhtml";
} else {
BufferedReader inputReader = new BufferedReader(new InputStreamReader(ivyConnection.getInputStream())); …Run Code Online (Sandbox Code Playgroud) jdom ×10
java ×9
xml ×6
parsing ×2
sax ×2
xml-parsing ×2
android ×1
dom ×1
eclipse ×1
eclipse-adt ×1
exception ×1
html ×1
jdom-2 ×1
parent-child ×1
performance ×1
utf-8 ×1