Android在3.1上创建XML

Android在3.1上创建XML,android,xml,transformer,Android,Xml,Transformer,我使用SDK 12得到这个错误 Caused by: org.apache.xml.serializer.utils.WrappedRuntimeException: Could not load the propery file 'output_xml.properties' for output method 'xml' (check CLASSPATH) 我的活动中的第175行是Transformer trans=transfac.newTransformer() 07-18 10:32

我使用SDK 12得到这个错误

Caused by: org.apache.xml.serializer.utils.WrappedRuntimeException: Could not load the propery file 'output_xml.properties' for output method 'xml' (check CLASSPATH)
我的活动中的第175行是
Transformer trans=transfac.newTransformer()

07-18 10:32:41.695:错误/AndroidRuntime(12864):致命异常:AsyncTask#1
07-18 10:32:41.695:错误/AndroidRuntime(12864):java.lang.RuntimeException:执行doInBackground()时出错
07-18 10:32:41.695:ERROR/AndroidRuntime(12864):在android.os.AsyncTask$3.done(AsyncTask.java:266)
07-18 10:32:41.695:ERROR/AndroidRuntime(12864):在java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273)
07-18 10:32:41.695:ERROR/AndroidRuntime(12864):位于java.util.concurrent.FutureTask.setException(FutureTask.java:124)
07-18 10:32:41.695:ERROR/AndroidRuntime(12864):位于java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307)
07-18 10:32:41.695:ERROR/AndroidRuntime(12864):位于java.util.concurrent.FutureTask.run(FutureTask.java:137)
07-18 10:32:41.695:ERROR/AndroidRuntime(12864):位于java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1081)
07-18 10:32:41.695:ERROR/AndroidRuntime(12864):位于java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:574)
07-18 10:32:41.695:ERROR/AndroidRuntime(12864):在java.lang.Thread.run(Thread.java:1020)处
07-18 10:32:41.695:错误/AndroidRuntime(12864):原因:org.apache.xml.serializer.utils.WrappedRuntimeException:无法加载输出方法“xml”(检查类路径)的属性文件“output_xml.properties”
07-18 10:32:41.695:ERROR/AndroidRuntime(12864):位于org.apache.xml.serializer.OutputPropertiesFactory.getDefaultMethodProperties(OutputPropertiesFactory.java:322)
07-18 10:32:41.695:ERROR/AndroidRuntime(12864):位于org.apache.xalan.templates.OutputProperties.(OutputProperties.java:83)
07-18 10:32:41.695:ERROR/AndroidRuntime(12864):位于org.apache.xalan.transformer.TransformerIdentityImpl.(TransformerIdentityImpl.java:88)
07-18 10:32:41.695:ERROR/AndroidRuntime(12864):位于org.apache.xalan.processor.TransformerFactoryImpl.newTransformer(TransformerFactoryImpl.java:823)
07-18 10:32:41.695:ERROR/AndroidRuntime(12864):位于jpl.test.AndroidserverActivity.generateXML(AndroidserverActivity.java:175)
07-18 10:32:41.695:ERROR/AndroidRuntime(12864):位于jpl.test.AndroidserverActivity$GetXML.doInBackground(AndroidserverActivity.java:63)
07-18 10:32:41.695:ERROR/AndroidRuntime(12864):位于jpl.test.AndroidserverActivity$GetXML.doInBackground(AndroidserverActivity.java:1)
07-18 10:32:41.695:ERROR/AndroidRuntime(12864):位于android.os.AsyncTask$2.call(AsyncTask.java:252)
07-18 10:32:41.695:ERROR/AndroidRuntime(12864):位于java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
这是我的密码:

public class AndroidserverActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        GetXML xml = new GetXML();
        xml.execute();
    }

    private class GetXML extends AsyncTask<String, Integer, String> 
    {
        protected String doInBackground(String... conn) 
        {
            String UID = "iPAD-CN5-DSS25-AC25";
            try 
            {
                String xml = generateXML("AC25", "/fa/gdscc/dss25-apc", UID);
                if (send("localhost", xml))
                    getData(UID);
                else
                    System.out.println("False");
            } 
            catch (MalformedURLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (XPathExpressionException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (ParserConfigurationException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (SAXException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (TransformerException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

            return null;
        }
    }

    public static String generateXML(String conn, String funcAddr, String UID) throws ParserConfigurationException, SAXException, 
                                                                    IOException, XPathExpressionException, TransformerException 
    {   
        String url = getXML("0", conn);

        DocumentBuilderFactory domFactory = DocumentBuilderFactory.newInstance();
        domFactory.setNamespaceAware(true); // never forget this!
        DocumentBuilder builder = domFactory.newDocumentBuilder();
        Document doc = XMLfromString(url);

        XPath xpath = XPathFactory.newInstance().newXPath();
        XPathExpression expr = xpath.compile("/SubscrProf/DataItem/DataItemName");

        Object result = expr.evaluate(doc, XPathConstants.NODESET);
        NodeList nodes = (NodeList) result;

        //build xml
        Document output = builder.newDocument();

        //create root
        org.w3c.dom.Element root = output.createElement("JMSMON2Req");
        output.appendChild(root);

        //create subitem
        org.w3c.dom.Element subItemNode = output.createElement("SubItem");
        subItemNode.setAttribute("UID", UID);
        root.appendChild(subItemNode);

        //create funcAddr
        org.w3c.dom.Element funcAddrNode = output.createElement("FuncAddr");
        Text text = output.createTextNode(funcAddr);
        funcAddrNode.appendChild(text);
        subItemNode.appendChild(funcAddrNode);

        //create itemname
        for (int i = 0; i < nodes.getLength(); i++) 
        {
            org.w3c.dom.Element itemNameNode = output.createElement("ItemName");
            text = output.createTextNode(nodes.item(i).getTextContent());
            itemNameNode.appendChild(text);
            subItemNode.appendChild(itemNameNode);
        }

        //create metadata uid
        org.w3c.dom.Element metaDataNode = output.createElement("Metadata");
        metaDataNode.setAttribute("key", "UID");
        text = output.createTextNode(UID);
        metaDataNode.appendChild(text);
        subItemNode.appendChild(metaDataNode);

        //create metadata conn
        org.w3c.dom.Element metaDataNode2 = output.createElement("Metadata");
        metaDataNode2.setAttribute("key", "CONN");
        text = output.createTextNode("5");
        metaDataNode2.appendChild(text);
        subItemNode.appendChild(metaDataNode2);

        /////////////////
        //Output the XML

        //set up a transformer
        TransformerFactory transfac = TransformerFactory.newInstance();
        Transformer trans = transfac.newTransformer();
        trans.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
        trans.setOutputProperty(OutputKeys.INDENT, "yes");

        //create string from xml tree
        StringWriter sw = new StringWriter();
        StreamResult out = new StreamResult(sw);
        DOMSource source = new DOMSource(output);

        trans.transform(source, out);

        return URLEncoder.encode("req", "UTF-8") + "=" + URLEncoder.encode(sw.toString(), "UTF-8");
    }
公共类AndroidserverActivity扩展活动{
/**在首次创建活动时调用*/
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
GetXML=新的GetXML();
execute();
}
私有类GetXML扩展异步任务
{
受保护的字符串背景(字符串…连接)
{
字符串UID=“iPAD-CN5-DSS25-AC25”;
尝试
{
字符串xml=generateXML(“AC25”,“/fa/gdscc/dss25 apc”,UID);
if(发送(“localhost”,xml))
获取数据(UID);
其他的
System.out.println(“假”);
} 
捕获(格式错误){
//TODO自动生成的捕捉块
e、 printStackTrace();
}捕获(XPathExpressionException e){
//TODO自动生成的捕捉块
e、 printStackTrace();
}捕获(IOE异常){
//TODO自动生成的捕捉块
e、 printStackTrace();
}捕获(ParserConfiguration异常e){
//TODO自动生成的捕捉块
e、 printStackTrace();
}捕获(SAXE异常){
//TODO自动生成的捕捉块
e、 printStackTrace();
}捕获(转换异常e){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
返回null;
}
}
公共静态字符串generateXML(字符串连接、字符串funcAddr、字符串UID)抛出ParserConfiguration异常、SAXException、,
IOException、XPathExpressionException、TransformerException
{   
字符串url=getXML(“0”,conn);
DocumentBuilderFactory domFactory=DocumentBuilderFactory.newInstance();
domFactory.setNamespaceAware(true);//永远不要忘记这一点!
DocumentBuilder=domFactory.newDocumentBuilder();
文档doc=XMLfromString(url);
XPath=XPathFactory.newInstance().newXPath();
XPathExpression expr=xpath.compile(“/SubscrProf/DataItem/DataItemName”);
Object result=expr.evaluate(doc,XPathConstants.NODESET);
节点列表节点=(节点列表)结果;
//构建xml
文档输出=builder.newDocument();
//创建根
org.w3c.dom.Element root=output.createElement(“JMSMON2Req”);
output.appendChild(根);
//创建子项
org.w3c.dom.Element subItemNode=output.createElement(“SubItem”);
setAttribute(“UID”,UID);
appendChild(子项节点);
//创建funcAddr
org.w3c.dom.Element funcAddrNode=output.createElement(“FuncAddr”);
Text Text=output.createTextNode(funcAddr);
funcAddrNode.appendChild(文本);
subItemNode.appendChild(funcAddrNode);
//创建项目名
对于(int i=0;ipublic class AndroidserverActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        GetXML xml = new GetXML();
        xml.execute();
    }

    private class GetXML extends AsyncTask<String, Integer, String> 
    {
        protected String doInBackground(String... conn) 
        {
            String UID = "iPAD-CN5-DSS25-AC25";
            try 
            {
                String xml = generateXML("AC25", "/fa/gdscc/dss25-apc", UID);
                if (send("localhost", xml))
                    getData(UID);
                else
                    System.out.println("False");
            } 
            catch (MalformedURLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (XPathExpressionException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (ParserConfigurationException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (SAXException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (TransformerException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

            return null;
        }
    }

    public static String generateXML(String conn, String funcAddr, String UID) throws ParserConfigurationException, SAXException, 
                                                                    IOException, XPathExpressionException, TransformerException 
    {   
        String url = getXML("0", conn);

        DocumentBuilderFactory domFactory = DocumentBuilderFactory.newInstance();
        domFactory.setNamespaceAware(true); // never forget this!
        DocumentBuilder builder = domFactory.newDocumentBuilder();
        Document doc = XMLfromString(url);

        XPath xpath = XPathFactory.newInstance().newXPath();
        XPathExpression expr = xpath.compile("/SubscrProf/DataItem/DataItemName");

        Object result = expr.evaluate(doc, XPathConstants.NODESET);
        NodeList nodes = (NodeList) result;

        //build xml
        Document output = builder.newDocument();

        //create root
        org.w3c.dom.Element root = output.createElement("JMSMON2Req");
        output.appendChild(root);

        //create subitem
        org.w3c.dom.Element subItemNode = output.createElement("SubItem");
        subItemNode.setAttribute("UID", UID);
        root.appendChild(subItemNode);

        //create funcAddr
        org.w3c.dom.Element funcAddrNode = output.createElement("FuncAddr");
        Text text = output.createTextNode(funcAddr);
        funcAddrNode.appendChild(text);
        subItemNode.appendChild(funcAddrNode);

        //create itemname
        for (int i = 0; i < nodes.getLength(); i++) 
        {
            org.w3c.dom.Element itemNameNode = output.createElement("ItemName");
            text = output.createTextNode(nodes.item(i).getTextContent());
            itemNameNode.appendChild(text);
            subItemNode.appendChild(itemNameNode);
        }

        //create metadata uid
        org.w3c.dom.Element metaDataNode = output.createElement("Metadata");
        metaDataNode.setAttribute("key", "UID");
        text = output.createTextNode(UID);
        metaDataNode.appendChild(text);
        subItemNode.appendChild(metaDataNode);

        //create metadata conn
        org.w3c.dom.Element metaDataNode2 = output.createElement("Metadata");
        metaDataNode2.setAttribute("key", "CONN");
        text = output.createTextNode("5");
        metaDataNode2.appendChild(text);
        subItemNode.appendChild(metaDataNode2);

        /////////////////
        //Output the XML

        //set up a transformer
        TransformerFactory transfac = TransformerFactory.newInstance();
        Transformer trans = transfac.newTransformer();
        trans.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
        trans.setOutputProperty(OutputKeys.INDENT, "yes");

        //create string from xml tree
        StringWriter sw = new StringWriter();
        StreamResult out = new StreamResult(sw);
        DOMSource source = new DOMSource(output);

        trans.transform(source, out);

        return URLEncoder.encode("req", "UTF-8") + "=" + URLEncoder.encode(sw.toString(), "UTF-8");
    }