相关疑难解决方法(0)

用javascript打印XML

我有一个字符串,表示我想要打印的非缩进XML.例如:

<root><node/></root>
Run Code Online (Sandbox Code Playgroud)

应成为:

<root>
  <node/>
</root>
Run Code Online (Sandbox Code Playgroud)

语法突出显示不是必需的.为了解决这个问题,我首先转换XML以添加回车符和空格,然后使用pre标签输出XML.为了添加新行和空格,我编写了以下函数:

function formatXml(xml) {
    var formatted = '';
    var reg = /(>)(<)(\/*)/g;
    xml = xml.replace(reg, '$1\r\n$2$3');
    var pad = 0;
    jQuery.each(xml.split('\r\n'), function(index, node) {
        var indent = 0;
        if (node.match( /.+<\/\w[^>]*>$/ )) {
            indent = 0;
        } else if (node.match( /^<\/\w/ )) {
            if (pad != 0) {
                pad -= 1;
            }
        } else if (node.match( /^<\w[^>]*[^\/]>.*$/ )) {
            indent = 1;
        } else {
            indent = 0;
        }

        var padding = …
Run Code Online (Sandbox Code Playgroud)

javascript xml xslt pretty-print

123
推荐指数
8
解决办法
14万
查看次数

你推荐什么Java XML库(替换dom4j)?

我正在寻找像dom4j这样的东西,但没有dom4j的瑕疵,例如文档不好或丢失,看似停滞的开发状态.

背景:我一直在使用 提倡 dom4j,但是我觉得它并不完全正确,因为我知道这个库远非最佳(例如:看看XSLT相关样式表类中的方法是如何记录的;你会传递什么来运行( )作为String mode参数?)

要求:与使用 纯JDK(javax.xmlorg.w3c.dom包)时相比,库应该使基本的XML处理更容易.这样的事情:

  • 将XML文档(从文件或字符串)读入对象,轻松遍历和操作DOM,执行XPath查询并针对它运行XSLT.
  • 在Java代码中构建XML文档,添加元素,属性和数据,最后将文档写入文件或字符串.

我真的很喜欢dom4j所承诺的,实际上:" 易于使用的开源库,用于处理XML,XPath和XSLT [...],完全支持DOM,SAX和JAXP. "即将推出的dom4j 2.0确实声称能解决所有问题:充分利用Java 5并添加缺少的文档.但不幸的是,如果你仔细观察:

警告:dom4j 2.0处于pre-alpha阶段.它很可能无法编译.如果它可以随机编译,很可能无法运行.如果它偶尔运行,它可能会突然爆炸.如果要使用dom4j,则需要1.6.1版.真.

......并且网站已经说了长时间了.那么有没有一个很好的替代dom4j?请为您的首选库提供一些理由,而不是仅仅转储名称和链接.:-)

java xml dom4j

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

来自javax.xml.transform.Transformer的漂亮打印输出,只有标准的java api(缩进和Doctype定位)

使用以下简单代码:

package test;

import java.io.*;
import javax.xml.transform.*;
import javax.xml.transform.stream.*;

public class TestOutputKeys {
    public static void main(String[] args) throws TransformerException {

        // Instantiate transformer input
        Source xmlInput = new StreamSource(new StringReader(
                "<!-- Document comment --><aaa><bbb/><ccc/></aaa>"));
        StreamResult xmlOutput = new StreamResult(new StringWriter());

        // Configure transformer
        Transformer transformer = TransformerFactory.newInstance()
                .newTransformer(); // An identity transformer
        transformer.setOutputProperty(OutputKeys.DOCTYPE_SYSTEM, "testing.dtd");
        transformer.setOutputProperty(OutputKeys.INDENT, "yes");
        transformer.transform(xmlInput, xmlOutput);

        System.out.println(xmlOutput.getWriter().toString());
    }

}
Run Code Online (Sandbox Code Playgroud)

我得到输出:

<?xml version="1.0" encoding="UTF-8"?>
<!-- Document comment --><!DOCTYPE aaa SYSTEM "testing.dtd">

<aaa>
<bbb/>
<ccc/>
</aaa>
Run Code Online (Sandbox Code Playgroud)

问题A:doctype标签出现在文档注释之后.是否有可能在文件评论之前出现?

问题B:如何仅使用JavaSE 5.0 …

java xml pretty-print

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

Java:将DOM写入XML文件(格式化问题)

我正在使用org.w3c XML API打开现有XML文件.我正在删除一些节点,而我正在添加其他节点.

问题是添加的新节点是一个接一个地写入的,没有换行符,也没有缩进.虽然XML文件确实有效,但人们很难检查它.

无论如何都要添加缩进,或者至少在每个节点后添加换行符?

java xml formatting pretty-print

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

java 8中的漂亮打印XML

我有一个XML文件存储为DOM文档,我想将它打印到控制台,最好不使用外部库.我知道这个问题已在本网站上被多次询问,但以前的答案都没有对我有用.我正在使用java 8,所以也许这是我的代码与以前的问题不同的地方?我还尝试使用从网络上找到的代码手动设置变换器,但这只是导致not found错误.

这是我的代码,它当前只是在控制台左侧的新行上输出每个xml元素.

import java.io.*;
import javax.xml.parsers.*;
import javax.xml.transform.*;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;

import org.w3c.dom.Document;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;


public class Test {
    public Test(){
        try {
            //java.lang.System.setProperty("javax.xml.transform.TransformerFactory", "org.apache.xalan.xsltc.trax.TransformerFactoryImpl");

            DocumentBuilderFactory dbFactory;
            DocumentBuilder dBuilder;
            Document original = null;
            try {
                dbFactory = DocumentBuilderFactory.newInstance();
                dBuilder = dbFactory.newDocumentBuilder();
                original = dBuilder.parse(new InputSource(new InputStreamReader(new FileInputStream("xml Store - Copy.xml"))));
            } catch (SAXException | IOException | ParserConfigurationException e) {
                e.printStackTrace();
            }
            StringWriter stringWriter = new StringWriter();
            StreamResult xmlOutput = new StreamResult(stringWriter); …
Run Code Online (Sandbox Code Playgroud)

java xml dom pretty-print transformer-model

24
推荐指数
3
解决办法
3万
查看次数

Java中的StAX XML格式

是否可以使用StAX(特别是woodstox)使用换行符和制表符格式化输出xml,即以下列形式:

<element1>
  <element2>
   someData
  </element2>
</element1>

代替:

<element1><element2>someData</element2></element1>

如果在woodstox中无法做到这一点,是否有其他轻量级库可以做到这一点?

java xml formatting stax woodstox

22
推荐指数
4
解决办法
3万
查看次数

Java:将格式化的xml文件转换为一个行字符串

我有一个格式化的XML文件,我想将它转换为一个行字符串,我该怎么做.

示例xml:

<?xml version="1.0" encoding="UTF-8"?>
<books>
   <book>
       <title>Basic XML</title>
       <price>100</price>
       <qty>5</qty>
   </book>
   <book>
     <title>Basic Java</title>
     <price>200</price>
     <qty>15</qty>
   </book>
</books>
Run Code Online (Sandbox Code Playgroud)

预期产出

<?xml version="1.0" encoding="UTF-8"?><books><book> <title>Basic XML</title><price>100</price><qty>5</qty></book><book><title>Basic Java</title><price>200</price><qty>15</qty></book></books>
Run Code Online (Sandbox Code Playgroud)

提前致谢.

java xml string

22
推荐指数
4
解决办法
11万
查看次数

如何在Scala中生成格式良好的XML?

假设您定义以下内容:

class Person(name: String, age: Int) {
    def toXml =
        <person>
            <name>{ name }</name>
            <age>{ age }</age>
        </person>   
}

val Persons = List(new Person("John", 34), new Person("Bob", 45))
Run Code Online (Sandbox Code Playgroud)

然后生成一些XML并将其保存到文件中:

val personsXml = 
    <persons>
        { persons.map(_.toXml) }
    </persons>

scala.xml.XML.save("persons.xml", personsXml)
Run Code Online (Sandbox Code Playgroud)

你最终得到了以下有趣的文字:

<persons>
        <person>
            <name>John</name>
            <age>32</age>
        </person><person>
            <name>Bob</name>
            <age>43</age>
        </person>
    </persons>
Run Code Online (Sandbox Code Playgroud)

当然,现在,这是完全有效的XML,但是如果你想在一个体面的文本编辑器中进行人工编辑,那么最好将它格式化得更好一些.

通过更改Scala XML文字的各个点上的缩进 - 使代码看起来不那么好 - 可以生成上述输出的变体,但似乎不可能完全正确.我理解为什么它会以这种方式格式化,但想知道是否有任何方法可以解决它.

scala

21
推荐指数
2
解决办法
8381
查看次数

适用于Java的最佳漂亮打印库?

什么是Java最好的漂亮打印库?我的意思是一个用于打印带缩进,中断提示等格式化输出的库,而不是用于美化/重新格式化Java代码本身的库.理想情况下,图书馆会System.out.println与朋友"玩得很开心" .

有关我正在寻找的内容的概念,请参阅OCaml的Format模块,尤其是Format.fprintf.

[更新]我不是在寻找控制台窗口库.漂亮的打印库允许您定义格式化任意值的方法,以便保留缩进并在合理的位置选择换行符.这些库存在于Haskell,Standard ML,OCaml,F#Scheme中.该XTC库提供了一些此功能的xtc.tree.Printer,但它并不像在其他语言库一样灵活.

java io pretty-print

8
推荐指数
1
解决办法
6603
查看次数

Java/DOM:获取节点的XML内容

我正在使用W3C DOM解析Java中的XML文件.我陷入了一个特定的问题,我无法弄清楚如何获得一个节点的整个内部XML.

该节点看起来像这样:

<td><b>this</b> is a <b>test</b></td>
Run Code Online (Sandbox Code Playgroud)

我必须使用什么功能来实现:

"<b>this</b> is a <b>test</b>"
Run Code Online (Sandbox Code Playgroud)

java xml dom

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