• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Java Document类代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理汇总了Java中org.kxml2.kdom.Document的典型用法代码示例。如果您正苦于以下问题:Java Document类的具体用法?Java Document怎么用?Java Document使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。



Document类属于org.kxml2.kdom包,在下文中一共展示了Document类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Java代码示例。

示例1: getXMLResponse

import org.kxml2.kdom.Document; //导入依赖的package包/类
public static Document getXMLResponse (Reader reader) {
    Document doc = new Document();

    try{
        KXmlParser parser = new KXmlParser();
        parser.setInput(reader);
        parser.setFeature(XmlPullParser.FEATURE_PROCESS_NAMESPACES, true);

        doc.parse(parser);
    } catch (Exception e) {
        System.err.println("couldn't process response payload from server!!");
        doc = null;
    }

    try {
        doc.getRootElement();
    } catch (RuntimeException re) {
        doc = null; //work around kxml bug where it should have failed to parse xml (doc == null)
                    //but instead returned an empty doc that throws an exception when you try to
                    //get its root element
    }

    return doc;
}
 
开发者ID:dimagi,项目名称:commcare-j2me,代码行数:25,代码来源:CommUtil.java


示例2: generateXmlManifestList

import org.kxml2.kdom.Document; //导入依赖的package包/类
public void generateXmlManifestList(PrintWriter output, CallingContext cc) throws IOException, ODKDatastoreException {
  Document d = new Document();
  d.setStandalone(true);
  d.setEncoding(HtmlConsts.UTF8_ENCODE);
  Element e = d.createElement(XML_TAG_NAMESPACE, XFormsTableConsts.MANIFEST_TAG);
  e.setPrefix(null, XML_TAG_NAMESPACE);
  d.addChild(0, Node.ELEMENT, e);
  int idx = 0;
  e.addChild(idx++, Node.IGNORABLE_WHITESPACE, BasicConsts.NEW_LINE);

  // build XML table of form information
  BinaryContentManipulator manifest = form.getManifestFileset();
  if ( manifest != null ) {
      int fileCount = manifest.getAttachmentCount(cc);
      for ( int i = 1 ; i <= fileCount ; ++i ) {
        idx = generateManifestXmlEntry(d, e, idx, form.getUri(), manifest, i, cc);
      }
  }

  KXmlSerializer serializer = new KXmlSerializer();
  serializer.setOutput(output);
  // setting the response content type emits the xml header.
  // just write the body here...
  d.writeChildren(serializer); 
  serializer.flush();
}
 
开发者ID:opendatakit,项目名称:aggregate,代码行数:27,代码来源:XFormsManifestXmlTable.java


示例3: generateXmlListOfForms

import org.kxml2.kdom.Document; //导入依赖的package包/类
public void generateXmlListOfForms(PrintWriter output, CallingContext cc) throws IOException, ODKDatastoreException {
  Document d = new Document();
  d.setStandalone(true);
  d.setEncoding(HtmlConsts.UTF8_ENCODE);
  Element e = d.createElement(XML_TAG_NAMESPACE, XFormsTableConsts.XFORMS_TAG);
  e.setPrefix(null, XML_TAG_NAMESPACE);
  d.addChild(0, Node.ELEMENT, e);
  int idx = 0;
  e.addChild(idx++, Node.IGNORABLE_WHITESPACE, BasicConsts.NEW_LINE);

  // build XML table of form information
  for (IForm form : forms) {
    if (!form.hasValidFormDefinition() || !form.getDownloadEnabled())
      continue;

    idx = generateFormXmlEntry(d, e, idx, form, cc);
  }

  KXmlSerializer serializer = new KXmlSerializer();
  serializer.setOutput(output);
  // setting the response content type emits the xml header.
  // just write the body here...
  d.writeChildren(serializer);
  serializer.flush();
}
 
开发者ID:opendatakit,项目名称:aggregate,代码行数:26,代码来源:XFormsXmlTable.java


示例4: loadXmlInstance

import org.kxml2.kdom.Document; //导入依赖的package包/类
/**
 * Load a compatible xml instance into FormDef f
 *
 * call before f.initialize()!
 */
public static void loadXmlInstance(FormDef f, Document xmlInst) {
       TreeElement savedRoot = XFormParser.restoreDataModel(xmlInst, null).getRoot();
       TreeElement templateRoot = f.getMainInstance().getRoot().deepCopy(true);

       // weak check for matching forms
       // TODO: should check that namespaces match?
    if (!savedRoot.getName().equals(templateRoot.getName()) || savedRoot.getMult() != 0) {
    	throw new RuntimeException("Saved form instance does not match template form definition");
    }

    // populate the data model
    TreeReference tr = TreeReference.rootRef();
    tr.add(templateRoot.getName(), TreeReference.INDEX_UNBOUND);
    templateRoot.populate(savedRoot, f);

    // populated model to current form
    f.getMainInstance().setRoot(templateRoot);

    // if the new instance is inserted into the formdef before f.initialize() is called, this
    // locale refresh is unnecessary
    //   Localizer loc = f.getLocalizer();
    //   if (loc != null) {
    //       f.localeChanged(loc.getLocale(), loc);
    //	 }
}
 
开发者ID:medic,项目名称:javarosa,代码行数:31,代码来源:XFormParser.java


示例5: readResponse

import org.kxml2.kdom.Document; //导入依赖的package包/类
public User readResponse(SimpleHttpTransportMessage message) throws UnrecognizedResponseException {
    this.prompt = null;

    byte[] responseBody = message.getResponseBody();

    //Not actually a response
    if(responseBody == null) {
        throw new UnrecognizedResponseException("No response body");
    }

    String responseVersion = message.getResponseProperties().getORApiVersion();
    if(responseVersion == null) {
        //If there's no version from the server, assume it's the same as the
        //sent version
        responseVersion = orApiVersion;
    }

    Document doc = CommUtil.getXMLResponse(responseBody);
    if (doc == null) {
        throw new UnrecognizedResponseException("can't parse xml");
    }

    return readResponseDocument(doc);
}
 
开发者ID:dimagi,项目名称:commcare-j2me,代码行数:25,代码来源:HttpUserRegistrationTranslator.java


示例6: loadXmlInstance

import org.kxml2.kdom.Document; //导入依赖的package包/类
/**
 * Load a compatible xml instance into FormDef f
 *
 * call before f.initialize()!
 */
public static void loadXmlInstance(FormDef f, Document xmlInst) {
    TreeElement savedRoot = XFormParser.restoreDataModel(xmlInst, null).getRoot();
    TreeElement templateRoot = f.getMainInstance().getRoot().deepCopy(true);

    // weak check for matching forms
    // TODO: should check that namespaces match?
    if (!savedRoot.getName().equals(templateRoot.getName()) || savedRoot.getMult() != 0) {
        throw new RuntimeException("Saved form instance does not match template form definition");
    }

    // populate the data model
    TreeReference tr = TreeReference.rootRef();
    tr.add(templateRoot.getName(), TreeReference.INDEX_UNBOUND);
    templateRoot.populate(savedRoot);

    // populated model to current form
    f.getMainInstance().setRoot(templateRoot);

    // if the new instance is inserted into the formdef before f.initialize() is called, this
    // locale refresh is unnecessary
    //   Localizer loc = f.getLocalizer();
    //   if (loc != null) {
    //       f.localeChanged(loc.getLocale(), loc);
    //     }
}
 
开发者ID:dimagi,项目名称:commcare-j2me,代码行数:31,代码来源:XFormParser.java


示例7: compareCaseDbState

import org.kxml2.kdom.Document; //导入依赖的package包/类
private void compareCaseDbState(String inputTransactions,
                                String caseDbState) throws Exception {
        ParseUtils.parseIntoSandbox(this.getClass().getResourceAsStream(inputTransactions), sandbox);

    EvaluationContext ec =
        MockDataUtils.buildContextWithInstance(this.sandbox, "casedb", CaseTestUtils.CASE_INSTANCE);
    Assert.assertTrue(CaseTestUtils.xpathEvalAndCompare(ec, "instance('casedb')/casedb/case[@case_id = 'case_one']/case_name", "case"));

    byte[] parsedDb = serializeCaseInstanceFromSandbox(sandbox);
    Document parsed = XmlComparator.getDocumentFromStream(new ByteArrayInputStream(parsedDb));
    Document loaded = XmlComparator.getDocumentFromStream(this.getClass().getResourceAsStream(caseDbState));

    try {
        XmlComparator.isDOMEqual(parsed, loaded);
    } catch(Exception e) {
        System.out.print(new String(parsedDb));

        //NOTE: The DOM's definitely don't match here, so the strings cannot be the same.
        //The reason we are asserting equality is because the delta between the strings is
        //likely to do a good job of contextualizing where the DOM's don't match.
        Assert.assertEquals("CaseDB output did not match expected structure(" + e.getMessage() + ")", new String(dumpStream(caseDbState)), new String(parsedDb));
    }
}
 
开发者ID:dimagi,项目名称:commcare-j2me,代码行数:24,代码来源:CaseParseAndReadTest.java


示例8: compareCaseDbState

import org.kxml2.kdom.Document; //导入依赖的package包/类
private void compareCaseDbState(String inputTransactions,
                                String caseDbState) throws Exception {
    config.parseIntoSandbox(this.getClass().getResourceAsStream(inputTransactions), sandbox, false);

    byte[] parsedDb = serializeCaseInstanceFromSandbox(sandbox);
    Document parsed = XmlComparator.getDocumentFromStream(new ByteArrayInputStream(parsedDb));
    Document loaded = XmlComparator.getDocumentFromStream(this.getClass().getResourceAsStream(caseDbState));

    try {
        XmlComparator.isDOMEqual(parsed, loaded);
    } catch(Exception e) {
        System.out.print(new String(parsedDb));

        //NOTE: The DOM's definitely don't match here, so the strings cannot be the same.
        //The reason we are asserting equality is because the delta between the strings is
        //likely to do a good job of contextualizing where the DOM's don't match.
        Assert.assertEquals("CaseDB output did not match expected structure(" + e.getMessage() + ")", new String(dumpStream(caseDbState)), new String(parsedDb));
    }
}
 
开发者ID:dimagi,项目名称:commcare-core,代码行数:20,代码来源:CaseParseAndReadTest.java


示例9: parseFormDefinition

import org.kxml2.kdom.Document; //导入依赖的package包/类
private static synchronized final XFormParserWithBindEnhancements parseFormDefinition(String xml,
    BaseFormParserForJavaRosa parser) throws ODKIncompleteSubmissionData {

  StringReader isr = null;
  try {
    isr = new StringReader(xml);
    Document doc = XFormParser.getXMLDocument(isr);
    return new XFormParserWithBindEnhancements(parser, doc);
  } catch (Exception e) {
    throw new ODKIncompleteSubmissionData(e, Reason.BAD_JR_PARSE);
  } finally {
    isr.close();
  }
}
 
开发者ID:opendatakit,项目名称:aggregate,代码行数:15,代码来源:BaseFormParserForJavaRosa.java


示例10: generateManifestXmlEntry

import org.kxml2.kdom.Document; //导入依赖的package包/类
private int generateManifestXmlEntry(Document d, Element e, int idx, String uri, BinaryContentManipulator m, int i, CallingContext cc) throws ODKDatastoreException {
    String filename = m.getUnrootedFilename(i, cc);
    String hash = m.getContentHash(i, cc);

    // if we don't have the file (hash==null), then don't emit anything.
    if ( hash == null ) return idx;
    
    int feIdx = 0;
    Element fileEntryElement = d.createElement(XML_TAG_NAMESPACE, XFormsTableConsts.MEDIA_FILE_TAG);
    e.addChild(idx++, Node.ELEMENT, fileEntryElement);
    Element fileNameElement = d.createElement(XML_TAG_NAMESPACE, XFormsTableConsts.FILE_NAME_TAG);
    fileEntryElement.addChild(feIdx++, Node.ELEMENT, fileNameElement);
    fileNameElement.addChild(0, Node.TEXT, filename);
    Element hashElement = d.createElement(XML_TAG_NAMESPACE, XFormsTableConsts.HASH_TAG);
    fileEntryElement.addChild(feIdx++, Node.ELEMENT, hashElement);
    hashElement.addChild(0, Node.TEXT, hash);
    Element downloadElement = d.createElement(XML_TAG_NAMESPACE, XFormsTableConsts.DOWNLOAD_URL_TAG);
    fileEntryElement.addChild(feIdx++, Node.IGNORABLE_WHITESPACE, BasicConsts.NEW_LINE);
    fileEntryElement.addChild(feIdx++, Node.ELEMENT, downloadElement);
    {
      Map<String, String> properties = new HashMap<String, String>();
      SubmissionKey k = FormInfo.getManifestSubmissionKey(uri, i);
      properties.put(ServletConsts.BLOB_KEY, k.toString());
      properties.put(ServletConsts.AS_ATTACHMENT, "true");
      String urlLink = HtmlUtil.createLinkWithProperties(downloadRequestURL, properties);
      downloadElement.addChild(0, Node.TEXT, urlLink);
    }
    e.addChild(idx++, Node.IGNORABLE_WHITESPACE, BasicConsts.NEW_LINE);
    return idx;
}
 
开发者ID:opendatakit,项目名称:aggregate,代码行数:31,代码来源:XFormsManifestXmlTable.java


示例11: emitXmlWrappedCsv

import org.kxml2.kdom.Document; //导入依赖的package包/类
private void emitXmlWrappedCsv(List<Row> resultTable, List<String> headers) throws IOException {

    Document d = new Document();
    d.setStandalone(true);
    d.setEncoding(HtmlConsts.UTF8_ENCODE);
    Element e = d.createElement(XML_TAG_NAMESPACE, XML_TAG_ENTRIES);
    d.addChild(0, Node.ELEMENT, e);
    int idx = 0;
    e.addChild(idx++, Node.IGNORABLE_WHITESPACE, BasicConsts.NEW_LINE);
    if (websafeCursorString != null) {
      Element cursor = d.createElement(XML_TAG_NAMESPACE, XML_TAG_CURSOR);
      e.addChild(idx++, Node.ELEMENT, cursor);
      cursor.addChild(0, Node.TEXT, websafeCursorString);
      e.addChild(idx++, Node.IGNORABLE_WHITESPACE, BasicConsts.NEW_LINE);
    }
    Element header = d.createElement(XML_TAG_NAMESPACE, XML_TAG_HEADER);
    e.addChild(idx++, Node.ELEMENT, header);
    header.addChild(0, Node.TEXT, generateCommaSeperatedElements(headers));
    e.addChild(idx++, Node.IGNORABLE_WHITESPACE, BasicConsts.NEW_LINE);

    Element resultRow;
    // generate rows
    for (Row row : resultTable) {
      resultRow = d.createElement(XML_TAG_NAMESPACE, XML_TAG_RESULT);
      e.addChild(idx++, Node.ELEMENT, resultRow);
      String csvRow = generateCommaSeperatedElements(row.getFormattedValues());
      resultRow.addChild(0, Node.TEXT, csvRow);
      e.addChild(idx++, Node.IGNORABLE_WHITESPACE, BasicConsts.NEW_LINE);
    }

    KXmlSerializer serializer = new KXmlSerializer();
    serializer.setOutput(output);
    // setting the response content type emits the xml header.
    // just write the body here...
    d.writeChildren(serializer);
    serializer.flush();
  }
 
开发者ID:opendatakit,项目名称:aggregate,代码行数:38,代码来源:FragmentedCsvFormatter.java


示例12: generateInstanceSchema

import org.kxml2.kdom.Document; //导入依赖的package包/类
public static Document generateInstanceSchema (FormDef f) {
	init();

	Element schema = new Element();
	schema.setName("schema");
	schema.setNamespace("http://www.w3.org/2001/XMLSchema");
	schema.setPrefix("", "http://www.w3.org/2001/XMLSchema");
	schema.setPrefix("jr", "http://openrosa.org/javarosa");
	if (f.getInstance().schema != null) {
		schema.setAttribute(null, "targetNamespace", f.getInstance().schema);
	} else {
		System.err.println("Warning: instance has no schema");
	}
	schema.setAttribute(null, "elementFormDefault", "qualified");

	String formVersion = f.getInstance().formVersion;
	String uiVersion = f.getInstance().uiVersion;
	if (formVersion != null)
		schema.setAttribute(null, "version", formVersion);
	if (uiVersion != null)
		schema.setAttribute(null, "uiVersion", uiVersion);

	processSelectChoices(schema, f, f);
	schema.addChild(Node.ELEMENT, schemizeInstance(f.getInstance().getRoot()));

	Document schemaXML = new Document();
	schemaXML.addChild(Node.ELEMENT, schema);

	return schemaXML;
}
 
开发者ID:medic,项目名称:javarosa,代码行数:31,代码来源:InstanceSchema.java


示例13: visit

import org.kxml2.kdom.Document; //导入依赖的package包/类
public void visit(FormInstance tree) {
	theXmlDoc = new Document();
	//TreeElement root = tree.getRoot();

	TreeElement root = tree.resolveReference(rootRef);

	//For some reason resolveReference won't ever return the root, so we'll
	//catch that case and just start at the root.
	if(root == null) {
		root = tree.getRoot();
	}

	if (root != null) {
		theXmlDoc.addChild(Node.ELEMENT, serializeNode(root));
	}

	Element top = theXmlDoc.getElement(0);

	String[] prefixes = tree.getNamespacePrefixes();
	for(int i = 0 ; i < prefixes.length; ++i ) {
		top.setPrefix(prefixes[i], tree.getNamespaceURI(prefixes[i]));
	}
	if (tree.schema != null) {
		top.setNamespace(tree.schema);
		top.setPrefix("", tree.schema);
	}
}
 
开发者ID:medic,项目名称:javarosa,代码行数:28,代码来源:XFormSerializingVisitor.java


示例14: restoreDataModel

import org.kxml2.kdom.Document; //导入依赖的package包/类
public static FormInstance restoreDataModel (InputStream input, Class restorableType) throws IOException {
	Document doc = getXMLDocument(new InputStreamReader(input));
	if (doc == null) {
		throw new RuntimeException("syntax error in XML instance; could not parse");
	}
	return restoreDataModel(doc, restorableType);
}
 
开发者ID:medic,项目名称:javarosa,代码行数:8,代码来源:XFormParser.java


示例15: getStream

import org.kxml2.kdom.Document; //导入依赖的package包/类
public static ByteArrayOutputStream getStream(Document doc) {
	KXmlSerializer serializer = new KXmlSerializer();
	ByteArrayOutputStream bos = new ByteArrayOutputStream();
	DataOutputStream dos = new DataOutputStream(bos);
	try {
		serializer.setOutput(dos, null);
		doc.write(serializer);
		serializer.flush();
		return bos;
	} catch (Exception e) {
		e.printStackTrace();
		return null;
	}
}
 
开发者ID:medic,项目名称:javarosa,代码行数:15,代码来源:XFormSerializer.java


示例16: getString

import org.kxml2.kdom.Document; //导入依赖的package包/类
public static String getString(Document doc) {
	ByteArrayOutputStream bos = getStream(doc);

	byte[] byteArr = bos.toByteArray();
	char[] charArray = new char[byteArr.length];
	for (int i = 0; i < byteArr.length; i++)
		charArray[i] = (char) byteArr[i];

	return String.valueOf(charArray);
}
 
开发者ID:medic,项目名称:javarosa,代码行数:11,代码来源:XFormSerializer.java


示例17: getUtfBytes

import org.kxml2.kdom.Document; //导入依赖的package包/类
public static byte[] getUtfBytes(Document doc) {
	KXmlSerializer serializer = new KXmlSerializer();
	ByteArrayOutputStream bos = new ByteArrayOutputStream();
	try {
		Writer osw = new OutputStreamWriter(bos, "UTF-8");
		serializer.setOutput(osw);
		doc.write(serializer);
		serializer.flush();
		return bos.toByteArray();
	} catch (Exception e) {
		e.printStackTrace();
		return null;
	}
}
 
开发者ID:medic,项目名称:javarosa,代码行数:15,代码来源:XFormSerializer.java


示例18: getBodyFromRegistration

import org.kxml2.kdom.Document; //导入依赖的package包/类
private byte[] getBodyFromRegistration(Document registration) {
     XmlSerializer ser = new KXmlSerializer();
     ByteArrayOutputStream bos = new ByteArrayOutputStream();
     try {
        ser.setOutput(bos, null);
        registration.write(ser);
    } catch (IOException e) {
        // We don't actually want to ever fail on this report,
        e.printStackTrace();
    }
    //Note: If this gets too big, we can just write a wrapper to stream bytes one at a time
    //to the array. It'll probably be the XML DOM itself which blows up the memory, though...
     return bos.toByteArray();

}
 
开发者ID:dimagi,项目名称:commcare-j2me,代码行数:16,代码来源:HttpUserRegistrationTranslator.java


示例19: readResponseDocument

import org.kxml2.kdom.Document; //导入依赖的package包/类
/**
 *
 * @param response
 * @return
 */
private User readResponseDocument(Document response) throws UnrecognizedResponseException {

    if("OpenRosaResponse".equals(response.getRootElement().getName()) && XMLNS_ORR.equals(response.getRootElement().getNamespace())) {
        return readResponseDocumentNew(response);
    }

    //do we want to look for some kind of 'ok' message? otherwise the server could send back
    //gibberish and we'd still interpret it as a successful registration. ideally, we should
    //require a certain 'ok' token, and throw the exception if it's not present

    boolean updates = false;
    for(int i = 0; i < response.getChildCount(); ++i) {
        Object o = response.getChild(i);
        if(!(o instanceof Element)) {
            continue;
        }
        Element e = (Element)o;
        if(e.getName().equals("response-message")) {
            //Do we want to actually just print out the message? That seems weird
            //given the internationalization
        } else if(e.getName().equals("user-data")){
            for(int j = 0; j < response.getChildCount(); ++j) {
                Object data = e.getChild(j);
                if(!(data instanceof Element)) {
                    continue;
                }
                Element dataElement = (Element)data;
                String propertyName = dataElement.getAttributeValue(null, "key");
                String property = (String)dataElement.getChild(0);
                user.setProperty(propertyName, property);
                updates = true;
            }
        }
    }
    return user;
}
 
开发者ID:dimagi,项目名称:commcare-j2me,代码行数:42,代码来源:HttpUserRegistrationTranslator.java


示例20: createXmlRegistrationDoc

import org.kxml2.kdom.Document; //导入依赖的package包/类
private Document createXmlRegistrationDoc(User u) {
    Document document = new Document();
    Element root = document.createElement(null,"registration");
    root.setNamespace(XMLNS_UR);

    addChildWithText(root,"username",u.getUsername());

    addChildWithText(root,"password",u.getPasswordHash());
    addChildWithText(root,"uuid",u.getUniqueId());

    addChildWithText(root,"date",DateUtils.formatDate(new Date(),DateUtils.FORMAT_ISO8601));

    addChildWithText(root, "registering_phone_id",PropertyManager._().getSingularProperty(JavaRosaPropertyRules.DEVICE_ID_PROPERTY));


    Element userData =  root.createElement(null,"user_data");

    for(Enumeration en = u.listProperties(); en.hasMoreElements() ;) {
        String property = (String)en.nextElement();
        Element data= userData.createElement(null,"data");
        data.setAttribute(null,"key",property);
        data.addChild(Element.TEXT, u.getProperty(property));
        userData.addChild(Element.ELEMENT, data);
    }
    root.addChild(Element.ELEMENT,userData);
    document.addChild(Element.ELEMENT, root);
    return document;
}
 
开发者ID:dimagi,项目名称:commcare-j2me,代码行数:29,代码来源:HttpUserRegistrationTranslator.java



注:本文中的org.kxml2.kdom.Document类示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Java MissingCellPolicy类代码示例发布时间:2022-05-23
下一篇:
Java AndP类代码示例发布时间:2022-05-23
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap