标签: jdom

如何使用 XMLOutputter 禁用转义

我使用 XMLOutputter 编写 xml 文件,然后在 android 中使用它。当文件被写入时,字符串

<string name="sname"><u>Text</u></string>
Run Code Online (Sandbox Code Playgroud)

写成

<string name="sname">&lt;u&gt;Text&lt;u&gt;</string>
Run Code Online (Sandbox Code Playgroud)

我从数据库读取“<u>Text<u>”,然后将其放入jdom文档中。然后我使用编写文档

XMLOutputter outputter = new XMLOutputter(Format.getPrettyFormat());
Writer writer = new OutputStreamWriter(new FileOutputStream(file), "utf-8");
outputter.output(doc, writer);
writer.close();
Run Code Online (Sandbox Code Playgroud)

如何防止转义并将准确的字符串从数据库放入文件?(我想要有“<”,而不是&lt;那里)

java xml jdom

6
推荐指数
1
解决办法
3751
查看次数

如何让JDOM/XPath忽略命名空间?

我需要处理XML DOM,最好是使用JDOM,我可以在节点上进行XPath搜索.我知道节点名称或路径,但我想完全忽略名称空间,因为有时文档带有名称空间,有时没有,我不能依赖于特定的值.那可能吗?怎么样?

xml xpath namespaces ignore jdom

5
推荐指数
2
解决办法
1万
查看次数

如何在Java中进行类型安全的Xpath查询?

我目前正在使用JDOM进行一些简单的XML解析,看起来没什么类型安全 - 我在使用内置的Java DOM解析器时遇到了类似的问题,只需要更多的API来解决问题.

例如,XPath.selectNodes将一个Objectas作为参数并返回一个原始列表,它只是感觉有点Java 1.1

是否存在用于Java的通用化XML和XPath库,或者是否有某种原因导致无法以类型安全的方式执行XPath查询?

java xml xpath jdom type-safety

5
推荐指数
1
解决办法
910
查看次数

使用JDOM将XML文件解析为尚未在XML文件中声明的外部DTD

在我的XML文件中,我有一些实体,如 &rsquo;

所以我为我的XML文档创建了一个DTD标记来定义这些实体.下面是用于读取XML文件的Java代码.

SAXBuilder builder = new SAXBuilder();
URL url = new URL("http://127.0.0.1:8080/sample/subject.xml");        
InputStream stream = url.openStream();
org.jdom.Document document = builder.build(stream);

Element root = document.getRootElement();

Element name = root.getChild("name");
result = name.getText();
System.err.println(result);
Run Code Online (Sandbox Code Playgroud)

如何更改Java代码以通过HTTP检索DTD以允许解析我的XML文档没有错误?

xml文档的简化示例.


<main>
  <name>hello &lsquo; world &rsquo; foo  &amp; bar </name> 
</main>
Run Code Online (Sandbox Code Playgroud)

java xml dtd jdom dtd-parsing

5
推荐指数
1
解决办法
7266
查看次数

如何将元素混合子元素检索为文本(JDOM)

我有一个类似以下的XML:

<documentation>
    This value must be <i>bigger</i> than the other.
</documentation>
Run Code Online (Sandbox Code Playgroud)

使用JDOM,我可以得到以下文本结构:

Document d = new SAXBuilder().build( new StringReader( s ) );
System.out.printf( "getText:          '%s'%n", d.getRootElement().getText() );
System.out.printf( "getTextNormalize: '%s'%n", d.getRootElement().getTextNormalize() );
System.out.printf( "getTextTrim:      '%s'%n", d.getRootElement().getTextTrim() );
System.out.printf( "getValue:         '%s'%n", d.getRootElement().getValue() );
Run Code Online (Sandbox Code Playgroud)

这给了我以下输出:

getText:          '
    This value must be  than the other.
'
getTextNormalize: 'This value must be than the other.'
getTextTrim:      'This value must be  than the other.'
getValue:         '
    This value must be bigger than the other.
' …
Run Code Online (Sandbox Code Playgroud)

java xml jdom

5
推荐指数
1
解决办法
1239
查看次数

在java中从xml中获取孙子孙女

我需要将xml文件的内容打印到某个txt文件中.这是我要打印的xml类型的示例:

<log>
    <logentry revision="234">
        <author>SOMEGUY</author>
        <date>SOME DATE</date>
        <paths>
            <path>asdf/asdf/adsf/asdf.zip</path>
        </path>
        <msg>blahblahblah</msg>
    </logentry>
</log>
Run Code Online (Sandbox Code Playgroud)

我可以获得我需要的所有信息,除了路径标记...这就是我所做的:

        FileWriter fstream = new FileWriter("c:\\work\\output.txt");
        BufferedWriter out = new BufferedWriter(fstream);

        Document document = (Document) builder.build(xmlFile);
        Element rootNode = document.getRootElement();
        List list = rootNode.getChildren("logentry");

        for (int i=0; i< list.size(); i++) {

            Element node = (Element) list.get(i);

            out.write("Revision: \n" + node.getAttributeValue("revision") + "\n\n");
            out.write("Author: \n"  + node.getChildText("author") + "\n\n");
            out.write("Date: \n"  + node.getChildText("date") + "\n\n");



            out.write("Message: \n"  + node.getChildText("msg"));
            out.write("\n-------------------------------------------------"
                    +"---------------------------------------------------\n\n");
        }
        out.close();
Run Code Online (Sandbox Code Playgroud)

那么,我是如何通过该标签获取信息的?

PS如果这是一个愚蠢的问题,请随意将其置于遗忘之中......只要你指引我回答:)

谢谢

java xml jdom

5
推荐指数
1
解决办法
1720
查看次数

JDOM 2和xpath

以下是从Spring-ws手册中摘录的代码:

public class HolidayEndpoint {

  private static final String NAMESPACE_URI = "http://mycompany.com/hr/schemas";

  private XPath startDateExpression;

  private XPath endDateExpression;

  private XPath nameExpression;

  private HumanResourceService humanResourceService;

  @Autowired
  public HolidayEndpoint(HumanResourceService humanResourceService)                      (2)
      throws JDOMException {
    this.humanResourceService = humanResourceService;

    Namespace namespace = Namespace.getNamespace("hr", NAMESPACE_URI);

    startDateExpression = XPath.newInstance("//hr:StartDate");
    startDateExpression.addNamespace(namespace);

    endDateExpression = XPath.newInstance("//hr:EndDate");
    endDateExpression.addNamespace(namespace);

    nameExpression = XPath.newInstance("concat(//hr:FirstName,' ',//hr:LastName)");
    nameExpression.addNamespace(namespace);
  }
Run Code Online (Sandbox Code Playgroud)

我的问题是,这似乎是使用JDOM 1.0,我想使用JDOM 2.0.

如何将此代码从JDOM 1.0转换为JDOM 2.0?为什么Spring没有更新他们的示例代码?

谢谢!

java spring-ws jdom jdom-2

5
推荐指数
1
解决办法
6663
查看次数

如何使用JDOM通过其属性的值获取元素?

我有一个像下面这样的xml文件:

<?xml version="1.0" encoding="UTF-8" ?>
<config>
   <admins>
       <url name="Writer Admin">http://www.mywebsite.com/admins?cat=writer</url>
       <url name="Editor Admin">http://www.mywebsite.com/admins?cat=editor</url>
   </admins>
   <users>
      <url name="Critic User">http://www.mywebsite.com/users?cat=critic</url>
      <url name="Reviewer User">http://www.mywebsite.com/users?cat=reviewer</url>
      <url name="Reader User">http://www.mywebsite.com/users?cat=reader</url>
   </users>
</config>
Run Code Online (Sandbox Code Playgroud)

如何使用Java中的JDOM库通过其"name"属性的值选择"url"元素?是否有任何简单的方法或我必须选择所有子元素并使用"for"循环检查所需的元素?有没有像.Net中的Linq那样的方法?

java xml dom jdom

5
推荐指数
1
解决办法
4989
查看次数

java.lang.ClassNotFoundException:org.jdom.JDOMException

我在尝试加载rss页面时收到以下错误消息:

Feb 16, 2013 9:08:44 PM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet [news-feed] in context with path [/publisher] threw exception [Servlet execution threw an exception] with root cause
java.lang.ClassNotFoundException: org.jdom.JDOMException
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1714)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1559)
    at com.sun.syndication.io.SyndFeedOutput.<init>(SyndFeedOutput.java:44)
Run Code Online (Sandbox Code Playgroud)

触发错误的代码行是:

    SyndFeedOutput output = new SyndFeedOutput();  
Run Code Online (Sandbox Code Playgroud)

我已经搜索了此错误消息,并阅读了有关它的几个帖子,包括在此网站上发布的内容.这些帖子表明将jdom.jar添加到构建路径将导致错误消失.但是,我已经将与jdom-2.0.4.jar捆绑在一起的所有8个jar文件添加到我在eclipse中的buildpath中,但每次尝试加载rss页面时,错误消息仍然存在.

我想知道问题是否可能与我使用jdom-2.0.4.jar以及可能是旧语法的事实有关:

    SyndFeedOutput output = new SyndFeedOutput();  
Run Code Online (Sandbox Code Playgroud)

此错误消息的其他帖子都来自旧版本的jdom.也许在新版本的jdom中调用等效的SyndFeedOutput()有一些新的语法?

任何人都可以帮助我通过此错误消息?

编辑:

为了解决Nocmear的建议,我已经确认以下9个jar文件是与jdom或rome相关的唯一jar文件,它们包含在我的应用程序的buildpath中:

jaxen-1.1.4.jar  
jdom-2.0.4.jar  
jdom-2.0.4-contrib.jar  
jdom-2.0.4-javadoc.jar  
jdom-2.0.4-junit.jar  
jdom-2.0.4-sources.jar  
rome-1.0.jar  
xercesImpl.jar  
xml-apis.jar  
Run Code Online (Sandbox Code Playgroud)

第二次编辑:


我下载了jdom-1.1.3并将它添加到我的应用程序的eclipse中的buildpath中,正如rolfl建议的那样.

当我在我的网络浏览器中加载rss页面时,tomcat给了我以下错误日志:

java.lang.NoClassDefFoundError: org/jdom/JDOMException
    com.sun.syndication.io.SyndFeedOutput.<init>(SyndFeedOutput.java:44)
    publisher.web.NewsFeedServlet.doGet(NewsFeedServlet.java:68)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:728)

java.lang.ClassNotFoundException: org.jdom.JDOMException
    org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1714)
    org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1559)
    com.sun.syndication.io.SyndFeedOutput.<init>(SyndFeedOutput.java:44)
    publisher.web.NewsFeedServlet.doGet(NewsFeedServlet.java:68)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
Run Code Online (Sandbox Code Playgroud)

现在包含在我的构建路径中的相关jar文件是: …

java rss rome jdom

5
推荐指数
2
解决办法
2万
查看次数

使用jdom向现有xml添加内容

package xml.dierenshop.flaming.v1;

import org.jdom2.Document;
import org.jdom2.Element;
import org.jdom2.output.XMLOutputter;
import org.jdom2.output.Format;
import java.io.FileWriter;
import java.io.IOException;

public class Writer {

    public void Writer(String categorie, String code, String naamartikel, String beschrijvingartikel, double prijz, String imgurl, String imgurl2, String imgurl3, String imgurl4, String imgurl5) {
        String prijs = String.valueOf(prijz);
        Document document = new Document();
        Element root = new Element("productlist");
        String naamelement = "naam";
        String categorieelement = "category";
        String descriptionelement = "description";
        Element child = new Element("product");
        child.addContent(new Element(categorieelement).setText(categorie));
        child.addContent(new Element("code").setText(code));
        child.addContent(new Element(naamelement).setText(naamartikel));
        child.addContent(new Element(descriptionelement).setText(beschrijvingartikel)); …
Run Code Online (Sandbox Code Playgroud)

java xml document class jdom

4
推荐指数
1
解决办法
2万
查看次数

标签 统计

jdom ×10

java ×9

xml ×8

xpath ×2

class ×1

document ×1

dom ×1

dtd ×1

dtd-parsing ×1

ignore ×1

jdom-2 ×1

namespaces ×1

rome ×1

rss ×1

spring-ws ×1

type-safety ×1