在进行了一些程序内操作之后,我最终得到了一个包含我要执行的变更日志的xom文档对象。根据我的理解,我必须在ChangeLogParser的帮助下将其转换为liquibase XML格式ParsedNode。但该接口在parse方法中假设一个外部表示形式。使用ResourceAccessor将Document对象注入解析器也是不可能的,因为方法getResourcesAsStream返回一组InputStream。因此,我能想到的使用liquibase基础设施的唯一方法是执行一个文档,打印成一个字符串,然后通过ByteArrayInputStream将其反馈回来。或者我需要编写一个独立的Document->ParsedNode转换器吗?
import liquibase.changelog.DatabaseChangeLog;
import liquibase.exception.SetupException;
import liquibase.parser.core.ParsedNode;
import liquibase.parser.core.ParsedNodeException;
import liquibase.resource.ClassLoaderResourceAccessor;
import nu.xom.Document;
import nu.xom.Element;
import nu.xom.Elements;
import org.apache.commons.lang3.StringUtils;
/**
* Convert a xom Document containing a liquibase changelog
* to a DatabaseChangeLog.
*/
public class XOMDocumentToDatabaseChangeLogConverter {
/**
* Convert the Document ot a DatabaseChangeLog.
* @param changeLogXML to convert.
* @return contained changelog.
* @throws SetupException on error.
* @throws ParsedNodeException on error.
*/
public static DatabaseChangeLog convert(Document changeLogXML) throws SetupException, ParsedNodeException {
DatabaseChangeLog result = new DatabaseChangeLog();
result.setPhysicalFilePath("");
Element rootElement = changeLogXML.getRootElement();
result.load(convert(rootElement), new ClassLoaderResourceAccessor());
return result;
}
/**
* Internal recursive method doing the node rollup.
* @param element to convert.
* @return converted node.
* @throws ParsedNodeException on error.
*/
protected static ParsedNode convert(Element element) throws ParsedNodeException {
ParsedNode node = new ParsedNode(null, element.getLocalName());
for (int i = 0; i < element.getAttributeCount(); ++i) {
node.addChild(null, element.getAttribute(i).getLocalName(), element.getAttribute(i).getValue());
}
String seenText = element.getValue();
if (!StringUtils.trimToEmpty(seenText).equals("")) {
node.setValue(seenText.trim());
}
Elements children = element.getChildElements();
for (int i = 0; i < children.size(); ++i) {
node.addChild(convert(children.get(i)));
}
return node;
}
}
问题内容: 如何从XML文档或Node对象中创建要在xstream中使用的InputStream对象?我需要更换??? 带有一些有意义的代码。谢谢。 问题答案:
问题内容: 我在应用程序中对函数和我尝试过的包godoc -html以及应用程序和结果创建了简单的注释 为什么我没有看到其他文件?以及为什么包的空格 问题答案: 默认情况下,未记录未导出的标识符。至少设置为查看它们: 可以使用“ m” URL参数来控制godoc服务的网页的显示方式;它接受以逗号分隔的标志名称列表作为值: ones methods show all embedded methods
我在用iText7做游戏。净c#。我正在尝试在内存中创建一个多页PDF文档(n页数),其中源PDF文档只包含一页。 我可以用一页创建一个新文档,但无法根据需要创建额外的页面。我试过了 但我得到了一个ArgumentOutOfRange例外。。。索引超出范围。。。等 我试图关闭destPdfDoc,然后重新打开它,认为第二页直到我关闭它才被写入。但是当第二次打开destPdfDoc时,它没有页面。我
创建 markdown 文档,文件名为 greeting.md,并将该文档放置于 docs 目录下。 website # 网站根目录 ├── docs │ └── greeting.md ├── src │ └── pages ├── docusaurus.config.js ├── ... 在文档顶部的 front matter 中设置 id 和 title 属性,以便
问题内容: 我想使用Python创建Word文档,但是,我想尽可能多地重用现有的文档创建代码。我目前正在使用XSLT生成HTML文件,并以编程方式将其转换为PDF文件。但是,我的客户现在要求以Word(.doc)格式提供同一文档。 到目前为止,我没有太多运气找到该问题的解决方案。有谁知道可以帮助解决此问题的开源库(或 gulp 专有解决方案)? 注意:所有可能的解决方案必须在Linux上运行。我相
主要内容:在CouchDB数据库中使用Fauxton创建文档,CouchDB使用cURL实用程序创建文档在CouchDB中,数据库的数据以文档的形式而不是表格存储。 在CouchDB数据库中使用Fauxton创建文档 要在CouchDB数据库中创建文档,请打开Fauxton url: 选择特定的数据库,假设在数据库:上创建文档,先点击数据库链接进入数据概览。 点击新文档(New Document),如下图所示: 然后就会打开一个页面,默认只有一个字段:,但是可以通点击”Add Field“来新增