问题标签 [jdom]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 如何使用 XML、JDom、JNI 和 C++ 处理字符编码
我正在开发一个应用程序,它读取 XML 文档并将内容与 JNI 一起传递给验证它的 C++-DLL。
对于这个任务,我使用JDom和JUniversalChardet以正确的编码解析 XML 文件。我的 C++ 接受const char*
XML 文件内容的 a 并且需要它在编码“ISO-8895-15”中,否则它会因为格式错误的字符而引发异常。
我的第一种方法是使用 JDom 附带的 OutputFormatter 并告诉它在Charset.forName("ISO-8859-15")
将 JDom 文档格式化为字符串时使用。之后,此 String 中 XML 的标头部分说:
问题是它仍然存储在 Java 字符串中,因此如果我做对了,它就会存储在 UTF-16 中。
我的本机方法如下所示:
所以我将上面提到的字符串从 JDom 的 OutputFormatter 传递到这个 JNI 方法中。仍然是 UTF-16,对吧?
在 JNI-C++-Method 中,我使用xmlFileContents String
with
那么,现在我得到了上面提到的 UTF-16 或 UTF-8 字符串?我的下一个问题是:如何将字符编码更改std::string xmlDataString
为 ISO-8859-15?还是我这样做的方式并不优雅?或者有没有办法在 Java 中完全进行字符编码?
谢谢你的帮助!马可
java - 使用 Saxon 和 XSLT 转换 JDOM XML 文档
我正在尝试转换一些 XML,以便 iso8879 实体字符串出现在字符的位置。例如,字符串1234-5678
将变为1234‐5678
. 我已经使用字符映射和http://www.w3.org/2003/entities/iso8879doc/overview.html上的样式表完成了这项工作。
我的 xslt 的第一部分如下所示:
当我在 Eclipse 中使用 Saxon XSLT 引擎运行此样式表时,它可以正常工作并输出一个带有连字符实体字符串代替连字符的 XML 文件。但是,我需要自动化这个过程,所以我使用 JDOM 包。不幸的是,字符在转换过程中没有被替换。进行转换的代码看起来有点像这样:
然后我使用以下方法将文档写入文件:
我已经开始在 Eclipse 中进行调试,看起来连字符在 xslt 转换期间没有被替换。我已经单独使用 Saxon xslt 引擎对其进行了测试,它确实可以工作,因此可能与从 Java 和 Jdom 中使用它有关。有人可以帮忙吗?
非常感谢。
吉姆
java - 如何以内存有效的方式将 xml 写入流 bean 网络
编辑以更清楚地指定场景。
我必须编写一个xml文件,信息来自几个bean(甚至不是整个bean,其中一些bean的jsut子集),一些bean包含列表等。所以我不能只给xstream一个根bean并让它写xml。还有一些格式可能需要满足一些条件,但上一期是
现在我正在使用 JDOM 在内存中创建文档,最终我使用 XMLOutputter 将文档写入文件。
但是我想写的 bean 可能有非常大的其他 bean 列表等,并且使用的内存可能非常高。
所以我怀疑在记忆方面应该有更好的方法?我已经使用 xstream 为较大的 bean 中的一些 bean 创建了 xml,并将它们作为元素附加到 JDOM。
我希望使用拉式解析器解析 xml 的内存效率更高,这同样适用于编写 xml。
java - 使用 removeContent() 从 JDOM 文档中删除元素
给定以下场景,其中 xml,Geography.xml 看起来像 -
以及以下示例 java 代码 -
该removeContent()
方法不会City
从doc
. b 的值是false
我不明白为什么它不删除元素,我什至试图从 xml 中删除Name
&Population
元素只是为了看看这是否是问题,但显然不是。
我尝试的另一种方法,我不知道为什么我知道它没有本质上的不同,仍然只是为了使用Parent
-
可能有什么问题?和可能的解决方案?如果有人可以分享该方法的真实行为removeContent()
,我怀疑它与父子关系有关。
java - java - 如何在java中使用jdom从节点中删除子节点?
我有一个xml结构如下:
现在,我想删除一个子节点,其中 text 等于 http。目前我正在使用此代码:
但它并没有完全从 xml 文件中删除子元素。它留给我
有什么建议么?
java - java jdom xml 复制一段xml
先给大家看一下xml结构:
这里<config>
是根元素。我必须创建一个 GUI 来编辑 xml 元素。我已经做到了,使用 JSP 并<engine>
在同一页面中为每个用户制作了一个 GUI,每个用户都可以编辑特定内容<engine>
,然后保存<config>
元素,并将更改保存到<engine>
我使用 eid 来隔离的特定标签特别<engine>
.
现在,我想<engine>
在单独的 xml 文件中重写正在编辑的特定内容。如何使用 jdom 实现它?
java - 如何以文本形式检索元素混合子项 (JDOM)
我有一个如下的 XML:
使用 JDOM,我可以获得以下文本结构:
这给了我以下输出:
我真正想要的是将元素的内容作为字符串获取,即"This value must be <i>bigger</i> than the other."
. getValue()
接近但删除<i>
标签。我想我想要类似innerHTML
XML 文档的东西......
我应该只在内容上使用 XMLOutputter 吗?还是有更好的选择?
java - 为什么这个异常没有被捕获
我有以下代码
我忘记包含一个依赖于 jdom.jar 库的库。当我运行应用程序时,我看到了这个错误。
根据 JDOM 文档, newInsance() 方法会抛出 JDOMEXCeption 所以它不应该捕获错误吗?
另外,我怎样才能避免必须添加一个 catch(Exception e) 子句来避免未知异常。
谢谢
java - 在一台机器上获取 JDOMException 但相同的 xml 在另一台机器上工作正常
我正在点击一个 xml 并将响应返回到输入流中。此 xml 在远程服务器上。
每当我在服务器上运行我的代码时,它都会给我 JDOMException,但是相同的代码,我在本地计算机上运行并在远程服务器上访问相同的 xml,它运行良好。
我无法弄清楚这里可能是什么问题,相同的 xml 在一台机器上运行良好,而在另一台机器上却没有。
请帮我。
谢谢惠普
java - Xpath 返回空元素对象
我有一个没有任何命名空间的字符串形式的 xml 文档,我想使用 Java、JDOM 和 XPath 对其进行解析,并创建一个对象树。由于 XPAth 总是需要一个前缀和一个命名空间来查询,我将命名空间和前缀添加到根,然后再添加到我想要获取的节点,但是我看到 Xpath 在文档中的每个节点中都需要一个命名空间,但只在根中.
所以一开始有没有办法将命名空间添加到文档对象中的所有元素中,这样我的 xpath 查询才能正确工作?
代码中还应该有其他错误和不好的方法。会很高兴有任何想法。
进而
}
最后一行返回空,它不是空的,但它会在里面抛出 jdom 异常。