本文整理汇总了Java中com.ximpleware.VTDNav.push方法的典型用法代码示例。如果您正苦于以下问题:Java VTDNav.push方法的具体用法?Java VTDNav.push怎么用?Java VTDNav.push使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类com.ximpleware.VTDNav
的用法示例。
在下文中一共展示了VTDNav.push方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: getAllAttributes
import com.ximpleware.VTDNav; //导入方法依赖的package包/类
/**
* 获取所有属性
* @param vn
* @return
* @throws Exception
* ;
*/
private Map<String, String> getAllAttributes(VTDNav vn) throws Exception {
vn.push();
AutoPilot apAttributes = new AutoPilot(vn);
Map<String, String> attributes = new HashMap<String, String>();
apAttributes.selectXPath("./@*");
int inx = -1;
while ((inx = apAttributes.evalXPath()) != -1) {
String name = vn.toString(inx);
inx = vn.getAttrVal(name);
String value = inx != -1 ? vn.toString(inx) : "";
attributes.put(name, value);
}
vn.pop();
return attributes;
}
示例2: getLangs
import com.ximpleware.VTDNav; //导入方法依赖的package包/类
/**
* 获取 tmxfile 中的所有语言
* @return
*/
public List<String> getLangs() {
VTDNav vn = vu.getVTDNav();
vn.push();
List<String> langs = new LinkedList<String>();
langs.add(header.getSrclang());
AutoPilot ap = new AutoPilot(vn);
try {
ap.selectXPath("/tmx/body/tu/tuv");
String lang;
int index = -1;
while (ap.evalXPath() != -1) {
index = vn.getAttrVal("xml:lang");
if (index == -1)
continue;
lang = vn.toRawString(index);
if (!langs.contains(lang)) {
langs.add(lang);
}
}
} catch (Exception e) {
e.printStackTrace();
}
vn.pop();
return langs;
}
示例3: analysisUT
import com.ximpleware.VTDNav; //导入方法依赖的package包/类
/**
* 分析 ut 节点,这个节点里面保存的一般都是 cf 标记或者单元内容
* @throws Exception
*/
private void analysisUT(VTDNav vn, SegmentBean segBean) throws Exception{
vn.push();
int index = -1;
String typeAtt = "";
if ((index = vn.getAttrVal("Type")) != -1) {
typeAtt = vn.toRawString(index);
}
String displayTextAtt = "";
if ((index = vn.getAttrVal("DisplayText")) != -1) {
displayTextAtt = vn.toRawString(index);
}
//判断开始与结束点
if ("start".equals(typeAtt) && !"cf".equals(displayTextAtt)) {
start = true; //一个单元的开始
end = false;
}else if ("end".equals(typeAtt) && !"cf".equals(displayTextAtt)) {
start = false;
end = true; // 一个单元的结束
}
segBean.setTagStr(vu.getElementFragment());
segBean.setHasTag(true);
needAdd = true;
vn.pop();
}
示例4: getAllAttributes
import com.ximpleware.VTDNav; //导入方法依赖的package包/类
/**
* 获取所有属性
* @param vn
* @return
* @throws Exception ;
*/
private Map<String, String> getAllAttributes(VTDNav vn) throws Exception {
vn.push();
AutoPilot apAttributes = new AutoPilot(vn);
Map<String, String> attributes = new HashMap<String, String>();
apAttributes.selectXPath("./@*");
int inx = -1;
while ((inx = apAttributes.evalXPath()) != -1) {
String name = vn.toString(inx);
inx = vn.getAttrVal(name);
String value = inx != -1 ? vn.toString(inx) : "";
attributes.put(name, value);
}
vn.pop();
return attributes;
}
示例5: setDataToOtherTU
import com.ximpleware.VTDNav; //导入方法依赖的package包/类
/**
* 向被合并的空的 tu 中填充值
* @param vn
* @param xm
* @param isSrc
* @param secondId
* @param otherContent
* @throws Exception
*/
private void setDataToOtherTU(VTDNav vn, XMLModifier xm, boolean isSrc, String secondId, String otherContent) throws Exception {
if (otherContent == null || otherContent.length() <= 0) {
return;
}
vn.push();
AutoPilot ap = new AutoPilot(vn);
String xpath = "/xliff/file/body/descendant::trans-unit[@id='" + secondId + "']"
+ (isSrc ? "/source" : "/target");
ap.selectXPath(xpath);
if (ap.evalXPath() != -1) {
xm.insertAfterHead(otherContent.getBytes("UTF-8"));
}
vn.pop();
}
示例6: getNotes
import com.ximpleware.VTDNav; //导入方法依赖的package包/类
private void getNotes(VTDNav vn, TuBean tuBean) throws Exception {
List<CommentBean> commentList = new LinkedList<CommentBean>();
vn.push();
AutoPilot ap = new AutoPilot(vn);
String xpath = "./note";
ap.selectXPath(xpath);
String commentText = "";
int attrIdx = -1;
while(ap.evalXPath() != -1){
attrIdx = vn.getAttrVal("from");
String user = "";
String date = "";
String type = "text";
if (attrIdx != -1) {
user = vn.toRawString(attrIdx);
}
if (vn.getText() != -1) {
String r8NoteText = vn.toString(vn.getText());
if (r8NoteText.indexOf(":") != -1) {
commentText += r8NoteText.substring(r8NoteText.indexOf(":") + 1, r8NoteText.length());
date = r8NoteText.substring(0, r8NoteText.indexOf(":"));
}else {
commentText += r8NoteText;
}
}
commentList.add(new CommentBean(user, date, type, commentText, null));
}
if (commentText.length() > 0) {
commentText = commentText.substring(0, commentText.length() - 1);
}
tuBean.setCommentList(commentList);
vn.pop();
}
示例7: ananysisTag
import com.ximpleware.VTDNav; //导入方法依赖的package包/类
private void ananysisTag(Map<Integer, String[]> targetMap) throws VTDException {
VTDNav vn = vu.getVTDNav();
vn.push();
int idex = vn.getCurrentIndex();
String tagName = vn.toString(idex);
if ("g".equals(tagName)) {
String ctype = vu.getCurrentElementAttribut("ctype", null);
String rpr = vu.getCurrentElementAttribut("rPr", "");
AutoPilot ap = new AutoPilot(vn);
ap.selectXPath("./node() | text()");
while (ap.evalXPath() != -1) {
idex = vn.getCurrentIndex();
int tokenType = vn.getTokenType(idex);
if (tokenType == 0) {
String name = vu.getCurrentElementName();
if ("ph".equals(name)) {
targetMap.put(idex, new String[] { vu.getElementContent(), rpr, ctype });
} else if ("g".equals(name)) {
ananysisTag(targetMap);
}
} else if (tokenType == 5) {
targetMap.put(idex, new String[] { vn.toRawString(idex), rpr, ctype });
}
}
} else if ("ph".equals(tagName)) {
targetMap.put(idex, new String[] { vu.getElementContent(), null, null });
} else { // 其他节点,一律当做字符串处理
targetMap.put(idex, new String[] { vu.getElementFragment(), null, null });
}
vn.pop();
}
示例8: getSdlComment
import com.ximpleware.VTDNav; //导入方法依赖的package包/类
/**
* 获取trados 2009的备注信息
*/
private void getSdlComment(VTDNav vn, VTDUtils vu, String commentId, TuMrkBean bean) throws Exception{
vn.push();
List<CommentBean> commentList = new LinkedList<CommentBean>();
boolean isCurrentSeg = true; //当前文本段的批注
if (bean == null) {
isCurrentSeg = false;
}
int attrIdx = -1;
if (commentId != null && !"".equals(commentId)) {
String commandXpath = "/xliff/doc-info/cmt-defs/cmt-def[@id='" + commentId + "']/Comments/Comment";
AutoPilot ap = new AutoPilot(vn);
ap.selectXPath(commandXpath);
while(ap.evalXPath() != -1){
String severity = null;
String user = null;
String date = null;
String commentText = null;
if ((attrIdx = vn.getAttrVal("severity")) != -1) {
severity = vn.toString(attrIdx);
}
if ((attrIdx = vn.getAttrVal("user")) != -1) {
user = vn.toString(attrIdx);
}
if ((attrIdx = vn.getAttrVal("date")) != -1) {
date = vn.toString(attrIdx);
}
commentText = vu.getElementContent();
commentList.add(new CommentBean(user, date, severity, commentText, isCurrentSeg));
}
}
//针对单一文本段的批注
if (isCurrentSeg) {
bean.setCommentList(commentList);
}else {
//这时是全局批注
fileCommentsList.addAll(commentList);
}
vn.pop();
}
示例9: getRowId
import com.ximpleware.VTDNav; //导入方法依赖的package包/类
/**
* 得到编辑器中一行文本段数据的唯一标识
* @param vn
* VTDNav对象
* @param handler
* XLFHandler对象
* @param fileName
* xliff文件名
* @return 编辑器中唯一标识该行文本段的Id;
* @throws XPathEvalException
*/
public static String getRowId(VTDNav vn, String fileName) throws XPathEvalException {
try {
if (!"trans-unit".equals(vn.toString(vn.getCurrentIndex()))) {
LOGGER.debug(Messages.getString("file.RowIdUtil.logger1"));
throw new XPathEvalException(Messages.getString("file.RowIdUtil.msg1"));
}
vn.push();
int idIdx = vn.getAttrVal("id");
String tuid = idIdx != -1 ? vn.toString(idIdx) : "";
while (!"file".equals(vn.toString(vn.getCurrentIndex()))) { // 找到file节点
if (!vn.toElement(VTDNav.PARENT)) { // 到跟节点都没有找到
LOGGER.error(Messages.getString("file.RowIdUtil.logger2"));
return null;
}
}
int originalIdx = vn.getAttrVal("original");
String original = originalIdx != -1 ? vn.toString(originalIdx) : "";
return fileName + SPLIT_MARK + original + SPLIT_MARK + tuid;
} catch (NavException e) {
LOGGER.error("", e);
e.printStackTrace();
} finally {
vn.pop();
}
return null;
}
示例10: description
import com.ximpleware.VTDNav; //导入方法依赖的package包/类
private String description(VTDNav navigator) throws Exception
{ navigator.push();
try
{ if (navigator.toElement(VTDNav.FIRST_CHILD,DESCRIPTION))
{ return text(navigator);
}
}
finally
{ navigator.pop();
}
return "";
}
示例11: checked
import com.ximpleware.VTDNav; //导入方法依赖的package包/类
private void checked(VTDNav navigator,Item item) throws Exception
{ AutoPilot pilot = new AutoPilot(navigator);
navigator.push();
pilot.selectXPath(CHECKED);
if (pilot.evalXPath() != -1)
{ String by = attribute(navigator,BY);
String date = attribute(navigator,DATE);
item.checked = new Item.Checked(by,date);
}
navigator.pop();
}
示例12: analysisChildOfTgtTuv
import com.ximpleware.VTDNav; //导入方法依赖的package包/类
/**
* 分析译文tuv节点下面的所有节点,获取出要翻译的文本段,但不占位,只获取文本
*/
private void analysisChildOfTgtTuv(Map<Integer, TextBean> tgtTextMap, VTDNav vn, VTDUtils vu) throws Exception {
vn.push();
AutoPilot ap = new AutoPilot(vn);
String xpath = "./*|text()";
ap.selectXPath(xpath);
int index = -1;
while (ap.evalXPath() != -1) {
int curIdx = vn.getCurrentIndex();
int tokenType = vn.getTokenType(curIdx);
// 等于0表示为节点
if (tokenType == 0) {
// 如果这个节点还有子节点。那么遍历其子节点
if (vu.getChildElementsCount() > 0) {
analysisChildOfTgtTuv(tgtTextMap, vn, vu);
} else {
String nodeName = vu.getCurrentElementName();
if ("df".equals(nodeName)) {
// df节点下的数据,直接加载。
if ((index = vn.getText()) != -1) {
tgtTextMap.put(index, new TextBean(-1, vn.toRawString(index), true));
}
} else if ("ut".equals(nodeName)) {
// ut节点下保存的是cf标记信息,要将它进行转义
if ((index = vn.getText()) != -1) {
if (vn.getAttrVal("Type") != -1) {
tgtTextMap.put(index, new TextBean(-1, vn.toString(index), false));
} else {
// 若 ut 节点没有 Type 属性,一般为除cf之外的其他标记,如symbol,这时一般当文本处理
tgtTextMap.put(index, new TextBean(-1, vn.toString(index), false));
}
}
}
}
} else if (tokenType == 5) { // 等于5表示为文本子节点
index = vn.getCurrentIndex();
tgtTextMap.put(index, new TextBean(-1, vn.toRawString(index), true));
}
}
vn.pop();
}
示例13: getHunspellAvailableLang
import com.ximpleware.VTDNav; //导入方法依赖的package包/类
/**
* 获取 hunspell 所支持的语言 2013-01-15
* @param xmlPath
* @return
*/
public Map<String, String> getHunspellAvailableLang(String xmlPath){
Map<String, String> langMap = new HashMap<String, String>();
VTDGen vg = new VTDGen();
if (!vg.parseFile(xmlPath, true)) {
logger.error("Hunspell 语言管理文件破损,无法解析。");
return null;
}
VTDNav vn = vg.getNav();
AutoPilot ap = new AutoPilot(vn);
AutoPilot childAP = new AutoPilot(vn);
String xpath = "/config/language";
try {
ap.selectXPath(xpath);
while (ap.evalXPath() != -1) {
String code = null;
String dictionary = null;
vn.push();
childAP.selectXPath("./isoCode");
if(childAP.evalXPath() != -1){
if (vn.getText() != -1) {
code = vn.toRawString(vn.getText());
}
}
vn.pop();
vn.push();
childAP.selectXPath("./dict");
if (childAP.evalXPath() != -1) {
if (vn.getText() != -1) {
dictionary = vn.toRawString(vn.getText());
}
}
vn.pop();
if (code != null && dictionary != null && !"".equals(code) && !"".equals(dictionary)) {
langMap.put(code, dictionary);
}
}
} catch (Exception e) {
logger.error("Hunspell 语言管理文件内容获取失败!", e);
}
return langMap;
}
示例14: getFilteredTUContent
import com.ximpleware.VTDNav; //导入方法依赖的package包/类
/**
* 获取trans-unit节点过滤后的source和target节点的文本内容(不去掉标记),过滤条件为不包括上下文匹配,不包括完全匹配,不包括已锁文本,过滤条件在首选项中设置
* @return Map<String, String > 两个键值对,srcContent --> 源文本的文本,tarContent --> 目标文本的文本
* 如果返回的是null,则标志source节点无内容,这对与行号就不自增
*/
public Map<String, String> getFilteredTUContent(String xlfPath, String nodeXpath, Map<String, Boolean> filterMap){
Map<String, String> tuTextMap = new HashMap<String, String>();
VTDNav vn = vnMap.get(xlfPath);
AutoPilot ap = new AutoPilot(vn);
Assert.isNotNull(vn, Messages.getString("qa.QAXmlHandler.msg1") + xlfPath);
AutoPilot childAp = new AutoPilot(vn);
try {
VTDUtils vUtils = new VTDUtils(vn);
ap.selectXPath(nodeXpath);
while (ap.evalXPath() != -1) {
vn.push();
//取出源文本的纯文本之前,先查看其内容是否为空,若为空,则返回,没有source节点,也返回null
childAp.selectXPath("./source");
if (childAp.evalXPath() != -1) { //因为标准里面只有一个source,因此此处用if不用while
String srcContent = vUtils.getElementContent();
//如果源文本为空或无值,则返回null
if (srcContent == null || "".equals(srcContent)) {
return null;
}
}else {
return null;
}
childAp.resetXPath();
vn.pop();
//首先过滤,如果有不应包括的文本段,则返回空
if (!filterTheTU(vn, filterMap)) {
return tuTextMap;
}
//下面获取目标文本的纯文本,在之前先检查目标文本是否为空或为空值,若是,则返回null,若没有target节点,也返回空
childAp.selectXPath("./target");
if (childAp.evalXPath() != -1) { //因为标准里面只有一个target,因此此处用if不用while
String tarContent = vUtils.getElementContent();
//如果源文本为空或无值,则返回null
if (tarContent == null || "".equals(tarContent)) {
return tuTextMap;
}else {
//两个检查项中的忽略标记,若有一项为true,那么就必须获取纯文本
tuTextMap.clear();
}
}else {
return tuTextMap;
}
childAp.resetXPath();
}
}catch (Exception e) {
logger.error(Messages.getString("qa.QAXmlHandler.logger13"), e);
}
return tuTextMap;
}
示例15: getAllSrcTextForFuzzy
import com.ximpleware.VTDNav; //导入方法依赖的package包/类
/**
* 针对繁殖翻译。获取所有的源文。robert 2012-09-20
* @return
*/
public Map<String, FuzzyTransDataBean> getAllSrcTextForFuzzy(ArrayList<String> rowIdList, boolean ignoreTag) {
Map<String, FuzzyTransDataBean> textMap = new LinkedHashMap<String, FuzzyTransDataBean>();
try {
VTDNav vn = null;
AutoPilot ap = new AutoPilot();
VTDUtils vUtils = new VTDUtils();
AutoPilot childAp = new AutoPilot();
for (String rowId : rowIdList) {
// 标识译文是否为空,如果为空,则为true,不为空则为 false
boolean isTargetNull = false;
// 是否锁定
boolean isLock = false;
vn = getVTDNavByRowId(rowId).duplicateNav();
ap.bind(vn);
vUtils.bind(vn);
childAp.bind(vn);
vn.push();
ap.selectXPath(RowIdUtil.parseRowIdToXPath(rowId));
if (ap.evalXPath() != -1) {
// 如果,当前文本段是处于锁定状态的,就不用获取
int index = vn.getAttrVal("translate");
if (index != -1 && "no".equalsIgnoreCase(vn.toString(index))) {
isLock = true;
}
String srcText = null;
vn.push();
childAp.selectXPath("./source");
if (childAp.evalXPath() != -1) {
// 如果忽略标记的话,就没有必要获取source节点的完整内容了
if (!ignoreTag) {
srcText = vUtils.getElementContent();
} else {
srcText = getTUPureText(vn);
}
}
vn.pop();
vn.push();
childAp.selectXPath("./target[text()!='' or *]");
if (childAp.evalXPath() != -1) {
isTargetNull = false;
} else {
isTargetNull = true;
}
vn.pop();
// 存放值
textMap.put(rowId, new FuzzyTransDataBean(srcText.trim(), isTargetNull, isLock));
}
vn.pop();
}
} catch (Exception e) {
e.printStackTrace();
}
return textMap;
}