
直接用项目里面的appconfig或是webconfig最方便。
在里面的appSettings段里加一个元素:
<appSettings>
<add key="mypath" value="thepath"/>
</appSettings>
可以直接用ConfigurationManager读取:
string pathStr = ConfigurationManagerAppSettings["mypath"]ToString();;
SQL Server 使得以XML导出数据变得更加简单 但在SQL Server 中导入XML数据并对其进行处理则有些麻烦
如果你参考Books Online(BOL) 你会发现有相关的条目 包括OPENXML以及 OPENROWSET 所有的这些例子都支持将XML文本作为已经声明的变量 这对于经常处理文本的用户来说非常方便 但对于希望在开发中读取XML文件并进行相应处理的开发人员来说就不是这样了 处理这样的问题 或许最好从内到外来对其进行分析
OPENXML是一个rowset函数(即返回一个rowset) 它的工作方式类似于rowset函数OPENQUERY和 OPENROWSET 使用OPENXML可以对XML数据执行JOINs *** 作而无需首先导入数据 你还可以将其同INSERT SELECT UPDATE以及DELETE等 *** 作联合使用 然而 要使用OPENXML 你必须执行两项OPENQUERY和OPENROWSET并不需要的任务 这两项任务需要两个系统存储进程 第一个是sp_xml_preparedocument 它将读取特定的XML文本并将其内容提取到内存中 其语法如下
sp_xml_preparedocument @hdoc = OUTPUT
[ @xmltext = ]
[ @xpath_namespaces =
具体参数如下 @hdoc 指向某内存区域的句柄(从作用上看等同于一个指针) 相关数据存放在这里 注意这是一个输出变量 当该进程运行后 该变量将包含指向XML文件内容在内存地址的句柄 由于你需要在随后使用此结果 因此要确保对其进行保存; @xmltext 实际上你所希望处理的XML文本; @xml_namespaces 为了正常 *** 作你的XML数据所需要的任何名字空间索引(namespace references) 注意在这里出现的任何URL都需要用尖括号(< >)括起来; 假设所传递的这些参数都有效 并且XML文档存在 那么你的XML数据就会被存放到内存中去 现在你就可以调用 sp_xml_preparedocument 传递存放有XML文件的变量 然后执行OPENXML 语法如下
OPENXML(idocint [in] rowpatternnvarchar[in] [flag yte[in]])
[WITH (SchemaDeclaration | TableName)]
注意 在本文中没有足够的文字来描述OPENXML所接收的参数 请参阅BOL以获取更多信息 在Transact SQL Reference中查找OPENXML
现在我们已经到达了最后的步骤 所有剩下的工作就是导入一个实际的XML文件到SQL并进行处理(很奇快为什么所有的BOL示例都没有涉及到这一关键的部分) (我必须感谢我的同事Billy Pang所给予的帮助 他帮助我解决这个问题 并给出了代码——尽管出于本文需要我对代码进行了裁减 谢谢Billy!) 基本的技巧是 将文件逐行按文本读取 然后把所有读取的行连接为一个大的VARCHAR变量 最后 将变量传递给前面所说的代码
以下就是读取文件并将其内容存放到某变量的代码
DECLARE @FileName varchar( )
DECLARE @ExecCmd VARCHAR( )
DECLARE @y INT
DECLARE @x INT
DECLARE @FileContents VARCHAR( )
CREATE TABLE #tempXML(PK INT NOT NULL IDENTITY( ) ThisLine VARCHAR( ))
SET @FileName = C:\Temp\CurrentSettings xml
SET @ExecCmd = type + @FileName
SET @FileContents =
INSERT INTO #tempXML EXEC master dbo xp_cmdshell @ExecCmd
SELECT @y = count() from #tempXML
SET @x =
WHILE @x < > @y
BEGIN
SET @x = @x +
SELECT @FileContents = @FileContents + ThisLine from #tempXML WHERE PK
= @x
END
SELECT @FileContents as FileContents
DROP TABLE #tempXML
现在在变量@FileContents变量中你已经获得了文件的全部内容 所需要做的只是将变量通过@xmltext参数传递给sp_xml_preparedocument 然后再调用OPENXML
lishixinzhi/Article/program/SQLServer/201311/22101
DocumentBuilderFactory domfac=DocumentBuilderFactorynewInstance();
try {
DocumentBuilder dombuilder=domfacnewDocumentBuilder();
InputStream is=new FileInputStream("d:/domxml");
Document doc= dombuilderparse(is);
Element root=docgetDocumentElement();
NodeList books=((Node) root)getChildNodes();
if(books!=null){
for(int i=0;i<booksgetLength();i++){
Node book=booksitem(i);
if(bookgetNodeType()==NodeELEMENT_NODE){
String URL=bookgetAttributes()getNamedItem("url")getNodeValue();
Systemoutprintln(URL);
for(Node node=bookgetFirstChild();node!=null;node=nodegetNextSibling()){
if(nodegetNodeType()==NodeELEMENT_NODE){
if(nodegetNodeName()equals("property")){
String name=nodegetAttributes()getNamedItem("name")getNodeValue();
// String name1=nodegetFirstChild()getNodeValue();
if(nameequals("user"))
{
String value=nodegetAttributes()getNamedItem("value")getNodeValue();
Systemoutprintln(value);
}
if(nameequals("password"))
{
String value=nodegetAttributes()getNamedItem("value")getNodeValue();
Systemoutprintln(value);
}
}
}
}
}
}
}
}
catch (Exception e) {
// TODO: handle exception
egetStackTrace();
}
}
已经完成,用的是DOM解析。获取url,user,password。还有不理解可以再询问。
一、环境:
主机:WIN8
开发环境:Eclipse
二、说明:
1打开sd卡中的xml文件,如果不存在,这新建一个,并写入默认配置
2读取xml文件
三、xml文件格式:
<xml version="10" encoding="UTF-8" standalone="true">
-<config>
<title>远程视频会见系统</title>
<local_port>12600</local_port>
<schedule_service_ip>1058159</schedule_service_ip>
<schedule_service_port>12601</schedule_service_port>
</config>
四、源代码:
package comexamplehelloanychat;
import javaioFile;
import javaioFileInputStream;
import javaioFileOutputStream;
import javaioIOException;
import javaioStringWriter;
import javanetInet6Address;
import javanetInetAddress;
import javanetNetworkInterface;
import javanetSocketException;
import javautilEnumeration;
import javaxxmlparsersDocumentBuilder;
import javaxxmlparsersDocumentBuilderFactory;
import androidosEnvironment;
import androidutilLog;
import orgw3cdomDocument;
import orgw3cdomElement;
import orgw3cdomNodeList;
import orgxmlpullv1XmlPullParserFactory;
import orgxmlpullv1XmlSerializer;
/
配置信息类
新建日期:2014/12/8 by jdh
/
public class Config implements IF_Config {
//配置信息
private Config_Info config_info = new Config_Info();
/
构造函数
/
public Config() {
boolean ok;
File sd_path;
File file_cfg_dir;
File file_cfg;
FileOutputStream out;
String str;
FileInputStream in;
//得到本机ip地址
config_infolocal_ip = getLocalIpAddress();
Systemoutprintf("本机ip:%s\n", config_infolocal_ip);
//获取SD卡目录
sd_path = EnvironmentgetExternalStorageDirectory();
//判断文件夹是否存在
file_cfg_dir = new File(sd_pathgetPath() + "//Remote_Meeting");
if (!file_cfg_direxists() && !file_cfg_dirisDirectory()) {
Systemoutprintln("配置文件夹Remote_Meeting不存在!");
ok = file_cfg_dirmkdirs();
if (ok) {
Systemoutprintln("创建文件夹成功!");
} else {
Systemoutprintln("创建文件夹失败!");
}
}
//判断配置文件是否存在
file_cfg = new File(file_cfg_dirgetPath(),"cfgxml");
if (!file_cfgexists())
{
Systemoutprintln("配置文件cfgxml不存在!");
try {
file_cfgcreateNewFile();
Systemoutprintln("创建文件cfgxml成功!");
//生成初始化的配置数据
try {
out = new FileOutputStream(file_cfg);
//保存默认配置
config_infotitle = "远程视频会见系统";
config_infolocal_port = 12600;
config_infoschedule_server_ip = "1058159";
config_infoschedule_server_port = 12601;
str = produce_xml_string(config_info);
outwrite(strgetBytes());
outclose();
} catch (IOException e) {
// TODO Auto-generated catch block
eprintStackTrace();
}
} catch (IOException e) {
// TODO Auto-generated catch block
eprintStackTrace();
}
}
config_infotitle = "远程";
config_infolocal_port = 126;
config_infoschedule_server_ip = "105";
config_infoschedule_server_port = 12;
Systemoutprintf("----222222222%s,%d,%s,%d\n",config_infotitle,config_infolocal_port,
config_infoschedule_server_ip,config_infoschedule_server_port);
//解析xml文件
try {
in = new FileInputStream(file_cfg);
DocumentBuilderFactory factory = DocumentBuilderFactorynewInstance();
DocumentBuilder builder = factorynewDocumentBuilder();
Document document = builderparse(in);
// 获取根节点
Element root = documentgetDocumentElement();
NodeList node = rootgetChildNodes();
//获得第1子节点:标题
config_infotitle = nodeitem(0)getFirstChild()getNodeValue();
//获得第2子节点:本机端口
config_infolocal_port = IntegerparseInt(nodeitem(1)getFirstChild()getNodeValue());
//获得第3子节点:调度服务器ip
config_infoschedule_server_ip = nodeitem(2)getFirstChild()getNodeValue();
//获得第4子节点:调度服务器端口
config_infoschedule_server_port = IntegerparseInt(nodeitem(3)getFirstChild()getNodeValue());
Systemoutprintf("----222222222%s,%d,%s,%d\n",config_infotitle,config_infolocal_port,
config_infoschedule_server_ip,config_infoschedule_server_port);
} catch (Exception e) {
eprintStackTrace();
}
}
@Override
public Config_Info get_config_info() {
return config_info;
}
/
得到本机ip地址
@return 本机ip地址
/
private String getLocalIpAddress() {
try {
for (Enumeration<NetworkInterface> en = NetworkInterface
getNetworkInterfaces(); enhasMoreElements();) {
NetworkInterface intf = ennextElement();
for (Enumeration<InetAddress> enumIpAddr = intf
getInetAddresses(); enumIpAddrhasMoreElements();) {
InetAddress inetAddress = enumIpAddrnextElement();
//if (!inetAddressisLoopbackAddress()) {
if (!inetAddressisLoopbackAddress() && !(inetAddress instanceof Inet6Address)) {
return inetAddressgetHostAddress()toString();
}
}
}
} catch (SocketException ex) {
Loge("WifiPreference IpAddress", extoString());
}
return null;
}
/
生成xml配置文件的String数据流
Config_Info的本机ip信息不会保存
@param info:配置信息
@return xml的String数据流
/
private String produce_xml_string(Config_Info info) {
StringWriter stringWriter = new StringWriter();
try {
// 获取XmlSerializer对象
XmlPullParserFactory factory = XmlPullParserFactorynewInstance();
XmlSerializer xmlSerializer = factorynewSerializer();
// 设置输出流对象
xmlSerializersetOutput(stringWriter);
//开始标签
xmlSerializerstartDocument("utf-8", true);
xmlSerializerstartTag(null, "config");
//标题
xmlSerializerstartTag(null, "title");
xmlSerializertext(infotitle);
xmlSerializerendTag(null, "title");
//本机端口
xmlSerializerstartTag(null, "local_port");
xmlSerializertext(IntegertoString(infolocal_port));
xmlSerializerendTag(null, "local_port");
//调度服务器ip
xmlSerializerstartTag(null, "schedule_service_ip");
xmlSerializertext(infoschedule_server_ip);
xmlSerializerendTag(null, "schedule_service_ip");
//调度服务器端口
xmlSerializerstartTag(null, "schedule_service_port");
xmlSerializertext(IntegertoString(infoschedule_server_port));
xmlSerializerendTag(null, "schedule_service_port");
xmlSerializerendTag(null, "config");
xmlSerializerendDocument();
} catch (Exception e) {
eprintStackTrace();
}
return stringWritertoString();
}
}
php是可以读取读取xml文件的。同时也可以遍历节点。网上有很多方法。你可以百度下。这里给你贴代码的话有很多代码。
举例:
有个名字为axml的文件
。内容为:
xml
version=”10″
encoding=”gb2312″
111
2222
3333
读取:
php
$xml
=
new
domdocument();
$xml-
load('axml');
foreach($xml->getelementsbytagname('list')
as
$list)
{
$value
=
$list->firstchild->nodevalue;
echo
$value”
”;
}
>
输出为:111
222
333
构建XML文档对象在解析XML文档前,需要构建要解析的XML文件所对应的XML文档对象。在获取XML文档对象时,首先需要创建SAXReader对象,然后调用该对象的read()方法获取对应的XML文档对象,然后调用XML文档对象里的实例变量(就是XML里面的数据)。具体代码如下:StringfileURL=requestgetRealpath(“XML的路径”);SAXReaderreader=newSAXReader();Documentdocument=readerread(newFile(fileURL));然后用对象document调用XML里面的数据。希望这个能帮助到你
C#
读取XML文件在5个步骤
//1、创建XmlDocument对象
XmlDocument
xmlDoc
=
new
XmlDocument();
//2、加载源文件
xmlDocLoad("文件名xml");
//3、获取根结点
XmlElement
xmlRoot
=
xmlDocDocumentElement;
//4、获取根结点下的子节点
foreach
以上就是关于c#中怎样读取xml文件中的数据,怎样动态将数据存储到xml文件中去全部的内容,包括:c#中怎样读取xml文件中的数据,怎样动态将数据存储到xml文件中去、SQLServer读取XML文件的做法、如何读取如下格式的xml文件等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)