我从我的weblogic 8.1环境中复制了一个代码,并在我的新环境weblogic 10.3.4中复制.以下代码安静在我的8.1环境中工作.当我使用相同的代码时,它给了我下面的例外.
码
String xmlPath="e:\\domains\\devdamsdomain\\j2ee\\configurations\\dcd\\dams\\common\\interfaceconfig.xml";
log.info("xmlpath" + xmlPath);
SAXBuilder saxBuilder = new SAXBuilder();
log.info("creating SAXBuilder");
Document document = saxBuilder.build(xmlPath);
Run Code Online (Sandbox Code Playgroud)
例外情况如下:
INFO [orabpel.invoke.pool-4.thread-12] (SubRegistration_ptClient.java:76) - exception occured: unknown protocol: e
java.net.MalformedURLException: unknown protocol: e
at java.net.URL.<init>(URL.java:574)
at java.net.URL.<init>(URL.java:464)
at java.net.URL.<init>(URL.java:413)
at oracle.xml.parser.v2.XMLReader.pushXMLReader(XMLReader.java:250)
at oracle.xml.parser.v2.XMLParser.parse(XMLParser.java:222)
at org.jdom.input.SAXBuilder.build(SAXBuilder.java:453)
at org.jdom.input.SAXBuilder.build(SAXBuilder.java:891)
at com.ura.proxy.subregistration.proxy.SubRegistration_ptClient.callSubRegistration_process(SubRegistration_ptClient.java:68)
at com.ura.dams.registration.businesscontrol.SubRegControlImpl.clientRequestwithReturn(SubRegControlImpl.java:19)
at com.ura.dams.registration.process.RegistrationUpload.objSubRegClientRequestwithReturn(RegistrationUpload.java:137)
at orabpel.registrationupload.ExecLetBxExe7.execute(ExecLetBxExe7.java:208)
at com.collaxa.cube.engine.ext.bpel.common.wmp.BPELxExecWMP.__executeStatements(BPELxExecWMP.java:42)
at com.collaxa.cube.engine.ext.bpel.common.wmp.BaseBPELActivityWMP.perform(BaseBPELActivityWMP.java:162)
at com.collaxa.cube.engine.CubeEngine.performActivity(CubeEngine.java:2465)
at com.collaxa.cube.engine.CubeEngine.handleWorkItem(CubeEngine.java:1132)
at com.collaxa.cube.engine.dispatch.message.instance.PerformMessageHandler.handleLocal(PerformMessageHandler.java:73)
at com.collaxa.cube.engine.dispatch.DispatchHelper.handleLocalMessage(DispatchHelper.java:219)
at com.collaxa.cube.engine.dispatch.DispatchHelper.sendMemory(DispatchHelper.java:327)
at com.collaxa.cube.engine.CubeEngine.endRequest(CubeEngine.java:4350)
at com.collaxa.cube.engine.CubeEngine.endRequest(CubeEngine.java:4281)
at com.collaxa.cube.engine.CubeEngine._createAndInvoke(CubeEngine.java:713)
at com.collaxa.cube.engine.CubeEngine.createAndInvoke(CubeEngine.java:545)
at com.collaxa.cube.engine.delivery.DeliveryService.handleInvoke(DeliveryService.java:654) …Run Code Online (Sandbox Code Playgroud) 我正在尝试计算文档中有多少元素:
Iterator<?> processDescendants = doc.getDescendants(new ElementFilter("a"));
while(processDescendants.hasNext()) {
numPending++;
}
processDescendants = doc.getDescendants(new ElementFilter("b"));
while(processDescendants.hasNext()) {
numPending++;
}
Run Code Online (Sandbox Code Playgroud)
必须有一种更简单的方法......例如:
processDescendants = doc.getDescendants(new ElementFilter("a|b")); // something like Regex maybe?
Run Code Online (Sandbox Code Playgroud)
有人可以帮忙吗?谢谢.
我在创建xml时遇到问题
<c:condition>
<a:condition>
<fieldName>fieldName</fieldName>
<fieldTest>fieldTest</fieldTest>
<fieldValues>
<fieldValue>fieldValue</fieldValue>
</fieldValues>
</a:condition>
<operator>operator</operator>
<a:condition>
<fieldName>fieldName</fieldName>
<fieldTest>fieldTest</fieldTest>
<fieldValues>
<fieldValue>fieldValue</fieldValue>
</fieldValues>
</a:condition>
</c:condition>
Run Code Online (Sandbox Code Playgroud)
上面是给我的xml标记。
我需要使用Java中的JDOM / XML创建此标签。
所以我正在使用
Element complexCondition = new Element("c:condition");
Run Code Online (Sandbox Code Playgroud)
创建“ c:condition”标签的代码。
但是我出错了
org.jdom.IllegalNameException: The name "c:condition" is not legal for JDOM/XML elements: Element names cannot contain colons.
Run Code Online (Sandbox Code Playgroud)
所以不知道出了什么问题。因为我是xml和JDOM的新手。请帮我解决这个问题。
我必须使用Java修改XML文件中的一些属性.输入XML具有用单引号括起的所有属性值.
但是在对文档进行所有更改后,当我将文档保存到XML文件中时,所有属性值都被双引号括起来.
XMLOutputter xmlOutput = new XMLOutputter();
xmlOutput.output(doc, new FileWriter(path));
Run Code Online (Sandbox Code Playgroud)
有什么方法可以让输出器使用单引号?
谢谢
我试图在几个不同的上下文中运行相同的查询,但我总是得到相同的结果.这是一个示例xml:
<root>
<p>
<r>
<t>text</t>
</r>
</p>
<t>text2</t>
</root>
Run Code Online (Sandbox Code Playgroud)
所以这就是我正在做的事情:
final XPath xpath = XPath.newInstance("//t");
List<Element> result = xpath.selectNodes(thisIsThePelement);
// and I've debuged it, it really is the <p> element
Run Code Online (Sandbox Code Playgroud)
我总是<t>在结果列表中得到这两个元素.我只需要在<t>里面<p>我传递的XPath对象.
任何想法都会有很大的帮助,谢谢.
我正在尝试使用jDOM拆分一个大的XML文件(500mb)(我知道我应该尝试SAX但是......)但是我得到的是org.jdom.IllegalAddException:内容已经有一个现有的父"root"异常,如图所示在下面的代码中.
示例xml和代码如下.我相信所有索引检查和其他琐碎的东西是正确的.
谢谢!!!
首先抱歉大量的代码.
<root>
<metadata><md1>...</md1><md2>...</md2><metadata>
<someOtherInfo><soi_1>...</soi_1></someOtherInfo>
<collection>
<item id="1">...</item><item id="2">...</item><item id="2">...</item>
</collection>
</root>
split() {
final String[] nodeNames = XmlUtils.getNodeNames(elementXpath); // returns {root, collection, item}
// creates tree of
//<root>
// <metadata><md1>...</md1><md2>...</md2><metadata>
// <someOtherInfo><soi_1>...</soi_1></someOtherInfo>
// <collection>
final Element originalDestination = importNodes(sourceDocument, nodeNames);
Element destination = null;
// traverses to "collection" element
Element source = sourceDocument.getRootElement();
for (int tempCount = 1; tempCount < nodeNames.length - 1; ++tempCount) {
source = source.getChild(nodeNames[tempCount]);
}
// get all "collection/item" elements
for (Object obj …Run Code Online (Sandbox Code Playgroud) 我想在xml中使用这种格式:
<ns2: test xmlns="url" xmlns:ns2="url2" xmlns:ns3="url3">
....
</ns2: test>
Run Code Online (Sandbox Code Playgroud)
我使用以下代码:
Namespace ns= Namespace.getNamespace("url");
Namespace ns2 = Namespace.getNamespace("ns2", "url2");
Namespace ns3= Namespace.getNamespace("ns3", "url3");
SAXBuilder vDocBuilder = new SAXBuilder();
Document vDocument = vDocBuilder.build(File);
System.out.println("Root element " + vDocument.getRootElement().getName());
org.jdom.Element test = new org.jdom.Element("test", ns);
vDocument.setRootElement(test);
vNewRootElement.addNamespaceDeclaration(ns2);
vNewRootElement.addNamespaceDeclaration(ns3);
Run Code Online (Sandbox Code Playgroud)
如果我设置名称空间:
vNewRootElement.setNamespace(ns3);
Run Code Online (Sandbox Code Playgroud)
然后我得到了
<ns2: test xmlns:ns2="url2" xmlns:ns3="url3"> ... </ns2: test>
without the default namespace xmlns="url".
Run Code Online (Sandbox Code Playgroud)
任何人都可以告诉我为什么它不起作用,有没有办法解决这个问题?
谢谢,哈纳
-我已经参照此链接试图用JDOM的帮助下改变XML值http://www.mkyong.com/java/how-to-modify-xml-file-in-java-jdom/
样本中显示的xml:
<?xml version="1.0" encoding="UTF-8"?>
<company>
<staff id="1">
<firstname>yong</firstname>
<lastname>mook kim</lastname>
<nickname>mkyong</nickname>
<salary>5000</salary>
</staff>
</company>
Run Code Online (Sandbox Code Playgroud)
我不清楚如何处理以下xml场景:
<?xml version="1.0" encoding="UTF-8"?>
<company>
<staff>
<firstname>yong</firstname>
<lastname>mook kim</lastname>
<nickname>mkyong</nickname>
<salary>
<basic>1000</basic>
<hra>150</hra>
</salary>
</staff>
<staff>
<firstname>sanjay</firstname>
<lastname>machani</lastname>
<nickname>chong</nickname>
<salary>
<basic>2000</basic>
<hra>200</hra>
</salary>
</staff>
</company>
Run Code Online (Sandbox Code Playgroud)
我的职员标签不会有身份证,我也会有薪水的孩子标签。但是我需要使用Java在xml中更改sanjay(firstname)的薪水。
任何的意见都将会有帮助。
我有一个xform文档
<?xml version="1.0" encoding="UTF-8"?><h:html xmlns:h="http://www.w3.org/1999/xhtml" xmlns="http://www.w3.org/1999/xhtml"
xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:jr="http://openrosa.org/javarosa">
<h:head>
<h:title>Summary</h:title>
<model>
<instance>
<data vaultType="nsp_inspection.4.1">
<metadata vaultType="metadata.1.1">
<form_start_time type="dateTime" />
<form_end_time type="dateTime" />
<device_id type="string" />
<username type="string" />
</metadata>
<date type="date" />
<monitor type="string" />
</data>
</instance>
</model>
</h:head>
Run Code Online (Sandbox Code Playgroud)
我想使用xpath和jdom从xform中选择数据元素
XPath xpath = XPath.newInstance("h:html/h:head/h:title/");
Run Code Online (Sandbox Code Playgroud)
似乎工作正常,并选择标题元素,但
XPath xpath = XPath.newInstance("h:html/h:head/model");
Run Code Online (Sandbox Code Playgroud)
不选择模型元素.我想这与命名空间有关.