我正在使用 org.apache.xerces.jaxp.DocumentBuilderImpl 在 java 中加载 xml 文档。要加载的文件是:
<?xml version="1.0" encoding="UTF-8"?>CRLF
<doc >CRLF
<e1 />CRLF
</doc>
我以常用方式加载文档:
DocumentBuilder builderXml = null;
Document nodeXml = null;
ByteArrayInputStream inputStream = new ByteArrayInputStream(xmlByte);
DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
documentBuilderFactory.setNamespaceAware(true);
builderXml = documentBuilderFactory.newDocumentBuilder();
nodeXml = builderXml.parse(inputStream);
加载的文档似乎没问题,但只缺少一件事。省略了行尾的 CR。
如果我打电话给这个
nodeXml.getChildNodes().item(0).getChildNodes().item(0).getNodeValue()
我得到 "\n " 字符串。
在正常情况下不是这个问题,但结合规范化我得到了不同的结果,如我所料。有人能帮我看看 CR 在结尾处有什么问题吗?
Java SDK 1.7_25 x86
预先感谢您的帮助
弗拉多
编辑:
在.net中我可以写这个
var xDoc = new XmlDocument();
xDoc.PreserveWhitespace = true;
using (var fs = new FileStream("file.xml", FileMode.Open))
{
xDoc.Load(fs);
}
var transform = new XmlDsigC14NTransform(false) { Algorithm = SignedXml.XmlDsigC14NTransformUrl };
transform.LoadInput(xDoc);
var output = (MemoryStream)transform.GetOutput();
File.WriteAllBytes("C:\\file1.xml", output.ToArray());
并保留空格。这在java中可能吗?