怎么才能知道一个网站的XML地址

怎么才能知道一个网站的XML地址,第1张

1、用 childNodes 属性,按顺序取

实现过程:首先创建一个 xml 对象,然后载入 xml 文件,再根据待取节点父节点在 xml 文件中的序号和本身的序号,确定待取节点的位置,最后返回待取节点的值。

//pId 待取节点父节点序号

//cId 待取节点序号

function getXmlNodeValue(pId, cId) {

var xmlDoc = new ActiveXObject("MicrosoftXMLDOM");

xmlDocasync = false;

xmlDocload("employeeInfoxml");

var nodes = xmlDocdocumentElementchildNodes[pId]childNodes[cId];return nodeschildNodes[0]text;

}

调用方法:alert(getXmlNodeValue(1, 2));

2、用 for 循环来取

实现过程:首先创建一个 ie 支持的 xml 对象,如果发生异常,是创建一个 FireFox 支持的空 xml 对象并返回空;然后载入 xml 文件,如要发生异常也返回空;最后,通过 for 循环遍历查找与传入的节点值相同的节点,找到后返回属于该节点的属性值。

//nodeValue 待取节点的所属节点值

function getXmlNodeValueFor(nodeValue){

var xmlDoc; 

try { 

//创建一个 ie 支持的 XML 文档对象 

xmlDoc = new ActiveXObject("MicrosoftXMLDOM");

}catch(e){

try{

//创建FireFox空的XML文档对象

xmlDoc=documentimplementationcreateDocument("","",null);

}catch(e){

alert(emessage);

return "";

}

}

xmlDocasync = false;

try { 

xmlDocload("employeeInfoxml");

}catch(e){

alert(emessage);

return "";

}

var xd=xmlDocdocumentElementchildNodes;

if(xd==null)

return "";

var tempValue;

for(var i=0;i<xdlength;i++){

if(xd[i]childNodes[0]childNodes[0]nodeValue==nodeValue) tempValue=xd[i]childNodes[2]childNodes[0]nodeValue;

}

return tempValue;

}

前者:

用在webconfig或者appconfig之类

是系统约定的节点,约定在这个节点下的所有

节点会被systemconfigurationconfigurationmanagerappsetting读到

后者:

完全的自定义接点,appsettings表示什么意思,add表示什么意思将在自己写的xml解析方法里指定和使用

简单来说,config是xml的一个子集

通常的xml都是只定义基本语法,至于节点的层次,节点格式,节点的含义,节点怎么被解析都是你自己定义使得你的xml文件能和你的xml解析方法对应

而webconfig,appconfig这类,是microsoft和软件作者已经定义好了节点意义,你只需要遵守他的格式和规则,就能达到配置作用。

打个可能不太好的比方:

xml文件本身是扑克牌

config是斗地主。

你用config,就不需要自己制定规则,按照它的规则打就行。很方便,但是你不能违反他的规则。

而你自己写xml,还要先制定好规则,规则怎么定都随便你,然后按照这个规则出牌

当然,这些都有一个大前提,都满足xml节点规范,你不能制定扑克牌的规则中放入几个麻将牌

JAVA与XML文件,可以说是软件开发的“黄金搭档”,而如何使用JAVA完成对XML文件的读取,是我们首先要解决的问题。

一、XML文件

这个示例文件包括了用来打开ORACLE数据库的各种参数

<xml version="10" encoding="UTF-8">

<dbmsg>

<dbinfo>

<drivername>oraclejdbcdriverOracleDriver</drivername>

<sConnStr>jdbc:oracle:thin:@118822580:1521:VOUCHERDB</sConnStr>

<username>SYS AS SYSDBA</username>

<password>voucherdb</password>

</dbinfo>

</dbmsg>

二、编写类名为ReadXml的类,用于解析XML文件

我们要在应用程序中打开数据库,就必须完成对该文件中drivername、sConnStr、username、password的读取,通过查找有关资料,笔者编制了以下程序,用于读取文件名为filename的XML文件。

package voucherbasic;

import javaioFileInputStream;

import javaioFileNotFoundException;

import javaioIOException;

import javaioInputStream;

import javaxxmlparsersDocumentBuilder;

import javaxxmlparsersDocumentBuilderFactory;

import javaxxmlparsersParserConfigurationException;

import orgw3cdomDocument;

import orgw3cdomElement;

import orgw3cdomNode;

import orgw3cdomNodeList;

import orgxmlsaxSAXException;

public class ReadXml {

private String drivername;

private String sConnStr;

private String username;

private String password;

public String getDrivername() {

return drivername;

}

public String getSConnStr() {

return sConnStr;

}

public String getUsername() {

return username;

}

public String getPassword() {

return password;

}

public void setDrivername(String drivername) {

thisdrivername = drivername;

}

public void setSConnStr(String connStr) {

sConnStr = connStr;

}

public void setUsername(String username) {

thisusername = username;

}

public void setPassword(String password) {

thispassword = password;

}

public ReadXml(String fileName){

DocumentBuilderFactory domfac=DocumentBuilderFactorynewInstance();

try {

DocumentBuilder dombuilder=domfacnewDocumentBuilder();

InputStream is=new FileInputStream(fileName);

Document doc=dombuilderparse(is);

Element root=docgetDocumentElement();

NodeList dbinfo=rootgetChildNodes();

if(dbinfo!=null){

for(int i=0;i<dbinfogetLength();i++){

Node db=dbinfoitem(i);

for(Node node=dbgetFirstChild();node!=null;node=nodegetNextSibling()){

if(nodegetNodeType()==NodeELEMENT_NODE){

if(nodegetNodeName()equals("drivername")){

setDrivername(nodegetFirstChild()getNodeValue());

}

if(nodegetNodeName()equals("sConnStr")){

setSConnStr(nodegetFirstChild()getNodeValue());

}

if(nodegetNodeName()equals("username")){

setUsername(nodegetFirstChild()getNodeValue());

}

if(nodegetNodeName()equals("password")){

setPassword(nodegetFirstChild()getNodeValue());

}

}

}

}

}

} catch (ParserConfigurationException e) {

// TODO Auto-generated catch block

eprintStackTrace();

} catch (FileNotFoundException e) {

// TODO Auto-generated catch block

eprintStackTrace();

} catch (SAXException e) {

// TODO Auto-generated catch block

eprintStackTrace();

} catch (IOException e) {

// TODO Auto-generated catch block

eprintStackTrace();

}

}

}

这个以ReadXml命名的类,使用了参数为文件名的构造方法,用户只要将配置文件我名称传递给该方法,就可以完成对XML文件的解析,进而完成对相应参数数的读取。

三、如何获取XML文件全路径并读取配置参数

获取XML文件全路径的方法有两个,一是在servlet中获取,二是在单独的JAVA类中获取。

1在servlet中获取XML文件的全路径并读取配置参数

程序片段String dirPath = getServletContext()getRealPath( "/WEB-INF");

String fileName = dirPath + "/connxml";

ReadXml xm = new ReadXml(fileName);

String DriverName = xmgetDrivername();

String connStr = xmgetSConnStr();

String user = xmgetUsername();

String pas = xmgetPassword();

将这段程序添加到servlet中dopost()之后即可完成参数的读取

2在单独的JAVA类中获取全路径并读取配置参数

程序片段

String dirpath = SystemgetProperty("userdir");

String xmlFile = dirpath + "/WebRoot/WEB-INF/connxml";

ReadXml rdxml = new ReadXml(xmlFile);

String driverName = rdxmlgetDrivername();

String sConnStr = rdxmlgetSConnStr();

String userName = rdxmlgetUsername();

String passWord = rdxmlgetPassword();

注:配置文件connxml保存在webroot/WEB-INF目录中。

如果你的xml放在硬盘上固定的位置,你可以用

XmlDocument doc = new XmlDocument();

docLoad("c:\\dfdfdfxml");

如果你的xml嵌入了程序集,那么请你先把这个资源

变成一个流。你如果不知道怎么变,那么你要参考

ms的帮助,有专门的类处理嵌入的资源。

然后用docLoad(stream);

右键点击那个xml,然后把生成 *** 作改为嵌入的资源。

Stream stream = AssemblyGetExecutingAssembly()GetManifestResourceStream("mynamespacemyxmlxml");

以上就是关于怎么才能知道一个网站的XML地址全部的内容,包括:怎么才能知道一个网站的XML地址、java 读取一个路径下的所有 xml类型的文件、js获取xml节点值,已有路径等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9503216.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存