Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用&<&燃气轮机&引用';通过javadom解析器_Java_Xml_Parsing_Dom - Fatal编程技术网

使用&<&燃气轮机&引用';通过javadom解析器

使用&<&燃气轮机&引用';通过javadom解析器,java,xml,parsing,dom,Java,Xml,Parsing,Dom,再见,ppl 我有课: public class XmlModifier { private DocumentBuilderFactory docFactory = null; private DocumentBuilder docBuilder = null; private Document document = null; private TransformerFactory transformFactory = null; private Tra

再见,ppl

我有课:

public class XmlModifier {

    private DocumentBuilderFactory docFactory = null;
    private DocumentBuilder docBuilder = null;
    private Document document = null;
    private TransformerFactory transformFactory = null;
    private Transformer transform = null;
    private DOMSource source = null;
    private StreamResult streamRes = null;
    private boolean exepDocBuilderAlarm = true;

    public XmlModifier() {
        this.docFactory = DocumentBuilderFactory.newInstance();
        try {
            this.docBuilder = docFactory.newDocumentBuilder();
        } catch (ParserConfigurationException e) {
            this.exepDocBuilderAlarm = false;
            e.printStackTrace();
        }
    }

    public void prepareXMLMessage(File file, String userName, String userPassword, String reqId, Integer NUMBER_OF_MSG_SENDS) {
        if (exepDocBuilderAlarm != false) {
            try {
                document = docBuilder.parse(file);
                setElementValues("si:sourceInfo", addElementsToArray("si:reqId,si:reqTag"), addElementsToArray(reqId + "," + reqId), NUMBER_OF_MSG_SENDS);
                setElementValues("usr:user", addElementsToArray("usr:id,usr:password"), addElementsToArray(userName + "," + userPassword), NUMBER_OF_MSG_SENDS);
                setElementValues("meth:method", addElementsToArray("meth:id,meth:tag"), addElementsToArray(reqId + "," + reqId), NUMBER_OF_MSG_SENDS);
                setElementValues("tb:tradeField", addElementsToArray("tb:value"), addElementsToArray(reqId), NUMBER_OF_MSG_SENDS);
                this.transformFactory = TransformerFactory.newInstance();
                this.transform = transformFactory.newTransformer();
                this.source = new DOMSource(document);
                this.streamRes = new StreamResult(file);
                this.transform.transform(source, streamRes);
                System.out.println("Done to execute XmlModifier");
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                this.docFactory = null;
                this.docBuilder = null;
                this.transformFactory = null;
                this.transform = null;
                this.source = null;
                this.streamRes = null;
            }
        }
    } 

    private void setElementValues(String rootElement, String[] childElements, String[] childElementsValues, Integer msgIDIncrement) {
        Node nodeRootElement = document.getElementsByTagName(rootElement).item(0);
        NodeList childElementlist = nodeRootElement.getChildNodes();
        for (int i = 0; i < childElements.length; i++) {
            for (int z = 0; z < childElementlist.getLength(); z++) {
                Node node = childElementlist.item(z);
                if (childElements[i].equals(node.getNodeName())) {
                    node.setTextContent(childElementsValues[i]);
                }
            }
        } 

    }

    private String[] addElementsToArray(String elements) {
        String[] theArray = null;
        theArray = elements.split(",");
        return theArray;
    }
}
公共类XmlModifier{
私有DocumentBuilderFactory docFactory=null;
私有文档生成器docBuilder=null;
私有文档=空;
私有TransformerFactory transformFactory=null;
专用变压器变换=null;
私有DOMSource=null;
私有StreamResult streamRes=null;
私有布尔值ExepDocBuilderArm=true;
公共XmlModifier(){
this.docFactory=DocumentBuilderFactory.newInstance();
试一试{
this.docBuilder=docFactory.newDocumentBuilder();
}捕获(ParserConfiguration异常e){
this.exepodobuilderarm=false;
e、 printStackTrace();
}
}
public void prepareXMLMessage(文件文件文件、字符串用户名、字符串用户密码、字符串请求ID、发送消息的整数){
如果(EXEPDOCBuilderArm!=假){
试一试{
document=docBuilder.parse(文件);
setElementValues(“si:sourceInfo”、addElementsToArray(“si:reqId,si:reqTag”)、addElementsToArray(reqId+”、“+reqId”)、发送消息的数量;
setElementValues(“usr:user”、addElementsToArray(“usr:id,usr:password”)、addElementsToArray(userName+”、“+userPassword”)、发送消息的数量;
setElementValues(“meth:method”,addElementsToArray(“meth:id,meth:tag”),addElementsToArray(reqId+”,“+reqId),发送消息的数量;
setElementValues(“tb:tradeField”、addElementsToArray(“tb:value”)、addElementsToArray(reqId)、消息发送的数量;
this.transformFactory=TransformerFactory.newInstance();
this.transform=transformFactory.newTransformer();
this.source=新的DOMSource(文档);
this.streamRes=新的StreamResult(文件);
this.transform.transform(source,streamRes);
System.out.println(“完成以执行XmlModifier”);
}捕获(例外e){
e、 printStackTrace();
}最后{
this.docFactory=null;
this.docBuilder=null;
this.transformFactory=null;
this.transform=null;
this.source=null;
this.streamRes=null;
}
}
} 
私有void setElementValues(字符串rootElement、字符串[]childElements、字符串[]childElementsValues、整数msgIDIncrement){
节点NodeRooteElement=document.getElementsByTagName(rootElement).item(0);
NodeList childElementlist=NodeRooteElement.getChildNodes();
for(int i=0;i
在输入时,我使用的xml有时格式不好。DOM解析器的问题是,在我看来,DOM解析器从具有特殊符号(如
<>&“
)的数据中解析整个xml对我来说并不好

如何在输入到
prepareXMLMessage(..)
时为xml提供
<>&“
”,然后在prepareXMLMessage(..)中毫无问题地解析它(更改元素中的一些值),并在输出时为xml返回
<>&“

谢谢你的帮助。

你试过了吗?这是一个很常见的问题。