我想使用Logback/SLF4J记录"漂亮打印"的XML.现在,我在日志中得到的东西是完全不可读的,我必须打开一些东西来解析它.我希望能够为调试配置日志记录(因为我只想在调试中看到XML)以人类可读的方式输出XML.
可能吗?
我正在使用apache commons配置XMLConfiguration来构建和保存XML文件.保存时没有格式化.我有类似的东西:
<root>
<node>
<child>
</child>
</node>
</root>
Run Code Online (Sandbox Code Playgroud)
我知道有很多方法可以使用其他库来获取输出并对其进行格式化,但是肯定必须有一种方法来设置像公共配置中的缩进一样简单的东西吗?
我正在尝试在JUnit测试中构建一个xml文档.
doc=docBuilder.newDocument();
Element root = doc.createElement("Settings");
doc.appendChild(root);
Element label0 = doc.createElement("label_0");
root.appendChild(label0);
String s=doc.getTextContent();
System.out.println(s);
Run Code Online (Sandbox Code Playgroud)
然而,文件保持空白(即println收益率)null.我不知道为什么会这样.实际问题是后续的XPath表达式会引发错误:Unable to evaluate expression using this context.
我正在尝试缩进由Transformer生成的XML.除了第一个节点 - 文档元素之外,所有DOM节点都按预期缩进.document元素不会在新行中开始,只是在XML声明之后立即生成.
当我转移到java 1.7时会出现这个错误,当使用java 1.6或1.5时,它不会发生.
我的代码:
ByteArrayOutputStream s = new OutputStreamWriter(out, "utf-8");
TransformerFactory tf = TransformerFactory.newInstance();
Transformer transformer = tf.newTransformer();
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount","4");
transformer.transform(new DOMSource(doc), new StreamResult(s));
Run Code Online (Sandbox Code Playgroud)
输出:
<?xml version="1.0" encoding="UTF-8"?><a>
<b>bbbbb</b>
</a>
Run Code Online (Sandbox Code Playgroud)
谁知道为什么?
顺便说一下,当我添加属性
transformer.setOutputProperty(OutputKeys.STANDALONE, "yes");
Run Code Online (Sandbox Code Playgroud)
它按预期工作,但xml声明已更改,它现在也具有独立属性,我不想更改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) 我试图在jsp页面上显示一个包含xml格式的xml数据的字符串.我不想解析xml但只想在浏览器上显示xml数据.
有人能帮我解决这个问题吗?
我正在寻找Java Swing组件,它会自动格式化我凌乱的XML(在一行中,参见示例):
<person><name>Joe</name><surname>Black</surname></person>
Run Code Online (Sandbox Code Playgroud)
等等
它看起来像十亿行长线并不是很好看:)我希望有一些组件,那将为我做肮脏的工作.Thankx
编辑: 我从数据库中获取XML输入为纯字符串,因此对我来说没有真正的XML文档:(