相关疑难解决方法(0)

如何从Java中打印XML?

我有一个包含XML的Java字符串,没有换行符或缩进.我想把它变成一个格式很好的XML的字符串.我该怎么做呢?

String unformattedXml = "<tag><nested>hello</nested></tag>";
String formattedXml = new [UnknownClass]().format(unformattedXml);
Run Code Online (Sandbox Code Playgroud)

注意:我的输入是一个字符串.我的输出是一个字符串.

(基本)模拟结果:

<?xml version="1.0" encoding="UTF-8"?>
<root>
  <tag>
    <nested>hello</nested>
  </tag>
</root>
Run Code Online (Sandbox Code Playgroud)

java xml pretty-print

432
推荐指数
20
解决办法
43万
查看次数

从Node实例获取完整的xml文本

我用Java读取了这个代码的XML文件:

File file = new File("file.xml");
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse(file);

NodeList nodeLst = doc.getElementsByTagName("record");

for (int i = 0; i < nodeLst.getLength(); i++) {
     Node node = nodeLst.item(i);
...
}
Run Code Online (Sandbox Code Playgroud)

那么,我如何从节点实例中获取完整的xml内容?(包括所有标签,属性等)

谢谢.

java xml

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

仅创建XML打印到一行

我创建了一些将地图写入XML的代码.它似乎工作但文件打印没有新行.所以在任何XML编辑器中它只在一行上.如何为每个孩子打印到新行?

DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.newDocument();

Element vdata = doc.createElement("vouchdata");
doc.appendChild(vdata);

for (Entry<String, String> entry : vouchMap.entrySet()) {
    Element udata = doc.createElement("vouch");

    Attr vouchee = doc.createAttribute("name");
    vouchee.setValue(entry.getKey());
    udata.setAttributeNode(vouchee);

    Attr voucher = doc.createAttribute("vouchedBy");
    voucher.setValue(entry.getValue());
    udata.setAttributeNode(voucher);

    vdata.appendChild(udata);
}

// write the content into xml file
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
DOMSource source = new DOMSource(doc);
StreamResult result = new StreamResult(new File("vouchdata.xml"));

// Output to console for testing
// StreamResult result = new …
Run Code Online (Sandbox Code Playgroud)

java xml dom

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

在输出XML中设置线宽和文件类型

请注意,一些读写简单XML文件(由DTD定义)的现有代码正在使用不推荐使用的类。想要将以下内容替换为不推荐使用的类。由于使用Java 6,因此希望使用包含在XML处理中的软件包,而不是使用第三方工具(尽管可以使用jdom之类的标准工具)。

OutputFormat format = new OutputFormat( doc );
format.setLineWidth( 100 );
format.setIndenting( true );
format.setIndent( 2 );
Run Code Online (Sandbox Code Playgroud)

这是尝试使用TransformerFactory的尝试,在各种SO答案中都有提及。在上面指定缩进似乎不太困难,尽管不像预期的那么明显。但是如何指定行长呢?

TransformerFactory transformerFactory = TransformerFactory.newInstance();
transformerFactory.setAttribute("indent-number", Integer.valueOf(4));
Transformer transformer = transformerFactory.newTransformer();
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
DOMSource source = new DOMSource(doc);
StreamResult result =  new StreamResult(writer);
transformer.transform(source, result);
Run Code Online (Sandbox Code Playgroud)

另请注意,该文件是使用DOS格式创建的,而上述格式是unix格式。有没有比这更好的方法了?这是一个非常简单的文件,不需要太多格式,只希望它除了程序外还可以被人读取。

java xml

5
推荐指数
0
解决办法
1329
查看次数

如何获取图像的dpi(Java)

在c#中,我们可以使用Image.Horizo​​ntalResolution和Image.VerticalResolution.

但在java中,如何获得它?

我找到了ImageInfo.java,但它只支持一些图像类型.

http://kickjava.com/src/imageinfo/ImageInfo.java.htm

java image dpi

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

缩进使用Transformer制作的XML

我正在尝试从Java创建XML并且在缩进时遇到问题.在以下代码中,您可以看到OutputKeys.INDENT设置为yes...

        //set up a transformer
        TransformerFactory transfac = TransformerFactory.newInstance();
        Transformer trans = transfac.newTransformer();
        trans.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
        trans.setOutputProperty(OutputKeys.INDENT, "yes");

        //create string from xml tree
        StringWriter sw = new StringWriter();
        StreamResult result = new StreamResult(sw);
        DOMSource source = new DOMSource(doc);
        trans.transform(source, result);
        String xmlString = sw.toString();

        //print xml
        System.out.println(xmlString);
Run Code Online (Sandbox Code Playgroud)

但它似乎没有影响,输出是:

<dataset id="1"><br>
<path></path><br>
<session id="1"><br>
<method><br>
<timestamp>a timestamp</timestamp><br>
<signiture><br>
<classPath></classPath><br>
<name>methodName</name><br>
<declarationType>String</declarationType><br>
<parameters><br>
<parameter>String</parameter><br>
<parameter>int</parameter><br>
</parameters><br>
</signiture><br>
<arguments><br>
<argument>SomeValue</argument><br>
<argument>AnotherValue</argument><br>
</arguments><br>
<return>ReturnValue</return><br>
</method><br>
</session><br>
</dataset><br>
Run Code Online (Sandbox Code Playgroud)

java xml formatting transformer-model

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

Java XML输出 - 子项的正确缩进

我想将一些简单的数据模型序列化为xml,我一直在使用标准的java.org.w3c相关代码(见下文),缩进比没有"OutputKeys.INDENT"好,但还有一点点剩下的东西 - 适合儿童元素的缩进.

我知道之前已经在stackoverflow上询问过,但是这个配置对我来说不起作用,这是我正在使用的代码:

        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
        DocumentBuilder builder = factory.newDocumentBuilder();
        Document doc = builder.newDocument();

        doc = addItemsToDocument(doc);
        // The addItemsToDocument method adds childElements to the document.

        TransformerFactory transformerFactory = TransformerFactory.newInstance();
        transformerFactory.setAttribute("indent-number", new Integer(4));
        // switching to setAttribute("indent-number", 4); doesn't help

        Transformer transformer = transformerFactory.newTransformer();
        transformer.setOutputProperty(OutputKeys.METHOD, "xml");
        transformer.setOutputProperty(OutputKeys.INDENT, "yes");

         DOMSource source = new DOMSource(doc);
       StreamResult result = new StreamResult(outFile);
        // outFile is a regular File outFile = new File("some/path/foo.xml");

        transformer.transform(source, result);
Run Code Online (Sandbox Code Playgroud)

产生的输出是:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<stuffcontainer> …
Run Code Online (Sandbox Code Playgroud)

java xml indentation

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