我对代码有一点问题,如下所示.将iterator().hasNext()永远不会变成假的,因为next()函数总是返回相同的元素.它以无限循环结束.
我想在集合中的每个元素中设置属性UserLock(从中返回 GetElements()).如果元素的类型是"Package",我将使用lockAllElements函数的递归调用锁定包下的所有元素.
private void lockAllElements(String internalGUID) {
Element tempElem = null;
while((repo.GetPackageByGuid(internalGUID).GetElements().iterator().hasNext()) == true) {
tempElem = repo.GetPackageByGuid(internalGUID).GetElements().iterator().next();
if(tempElem.GetType().equals("Package")) {
this.lockAllElements(tempElem.GetElementGUID());
}
tempElem.ApplyUserLock();
}
}
Run Code Online (Sandbox Code Playgroud) 我在使用用于处理 XML 文件的 JDOM2 时遇到了一些问题。\n我想将 XML 文件转换为字符串而不进行任何操作或优化。
\n\n这就是我的 Java 代码:
\n\nSAXBuilder builder = new SAXBuilder();\n File xmlFile = f;\n\n try \n {\n Document document = (Document) builder.build(xmlFile);\n\n xml = new XMLOutputter().outputString(document);\n\n } catch (Exception e) {\n System.out.println(e.getMessage());\n }\n\n return xml;\nRun Code Online (Sandbox Code Playgroud)\n\n但是当我将字符串与原始 XML 文件进行比较时,我注意到一些变化。
\n\n原本的:
\n\n<?xml version="1.0" encoding="windows-1252"?>\n<xmi:XMI xmi:version="2.1" xmlns:uml="http://schema.omg.org/spec/UML/2.0" xmlns:xmi="http://schema.omg.org/spec/XMI/2.1" xmlns:thecustomprofile="http://www.sparxsystems.com/profiles/thecustomprofile/1.0" xmlns:SoaML="http://www.sparxsystems.com/profiles/SoaML/1.0">\nRun Code Online (Sandbox Code Playgroud)\n\n和字符串:
\n\n<?xml version="1.0" encoding="UTF-8"?>\n<xmi:XMI xmlns:xmi="http://schema.omg.org/spec/XMI/2.1" xmlns:SoaML="http://www.sparxsystems.com/profiles/SoaML/1.0" xmlns:thecustomprofile="http://www.sparxsystems.com/profiles/thecustomprofile/1.0" xmlns:uml="http://schema.omg.org/spec/UML/2.0" xmi:version="2.1">\nRun Code Online (Sandbox Code Playgroud)\n\n所有变音符号(\xc3\xa4、\xc3\xb6、\xc3\xbc)也被更改。我会得到类似的东西:\'\xef\xbf\xbd\'而不是\'\xc3\xa4\'。
\n\n有什么办法可以制止这种行为吗?
\n