如果您对如何使用T-SQL从URL读取XML?感兴趣,那么本文将是一篇不错的选择,我们将为您详在本文中,您将会了解到关于如何使用T-SQL从URL读取XML?的详细内容,并且为您提供关于.net–如何
如果您对如何使用T-SQL从URL读取XML?感兴趣,那么本文将是一篇不错的选择,我们将为您详在本文中,您将会了解到关于如何使用T-SQL从URL读取XML?的详细内容,并且为您提供关于.net – 如何使用LINQ to XML读取/写入加密的XML文件?、c# – 如何从url读取csv文件?、c# – 如何使用Web代理从Internet读取XML?、C#中如何使用 XmlReader 读取XML文件的有价值信息。
本文目录一览:- 如何使用T-SQL从URL读取XML?
- .net – 如何使用LINQ to XML读取/写入加密的XML文件?
- c# – 如何从url读取csv文件?
- c# – 如何使用Web代理从Internet读取XML?
- C#中如何使用 XmlReader 读取XML文件
如何使用T-SQL从URL读取XML?
<response> <sum>0</sum> <result>0</result> <comment>sel*1.9488|buy*1.9453</comment> </response>
现在想要存储过程,我可以从url解析这个xml文件,并更新为< comment>中的列值.ll * 1.9488 | buy * 1.9453< / comment>想添加购买* 1.9453到我的桌子.怎么样?
解决方法
启用Ole Automation Procedures
sp_configure 'show advanced options',1; GO RECONfigURE; GO sp_configure 'Ole Automation Procedures',1; GO RECONfigURE; GO
然后,为了从URL获取XML(基于here的更新版本回答),下面创建一个临时表来存储该值,以便您可以使用xpath和子字符串处理结果.
这是一个使用google maps xml的工作示例,您需要更新url和xpath以满足您的特定要求.
USE tempdb GO IF OBJECT_ID('tempdb..#xml') IS NOT NULL DROP TABLE #xml CREATE TABLE #xml ( yourXML XML ) GO DECLARE @URL VARCHAR(8000) DECLARE @QS varchar(50) -- & or ? depending if there are other query strings -- Use this for when there is other query strings: SELECT @QS = '&date='+convert(varchar(25),getdate(),126) -- Use this for when there is NO other query strings: -- SELECT @QS = '?date='+convert(varchar(25),126) SELECT @URL = 'http://maps.google.com/maps/api/geocode/xml?latlng=10.247087,-65.598409&sensor=false' + @QS DECLARE @Response varchar(8000) DECLARE @XML xml DECLARE @Obj int DECLARE @Result int DECLARE @HTTPStatus int DECLARE @ErrorMsg varchar(MAX) EXEC @Result = sp_OACreate 'MSXML2.XMLHttp',@Obj OUT EXEC @Result = sp_OAMethod @Obj,'open',NULL,'GET',@URL,false EXEC @Result = sp_OAMethod @Obj,'setRequestHeader','Content-Type','application/x-www-form-urlencoded' EXEC @Result = sp_OAMethod @Obj,send,'' EXEC @Result = sp_OAGetProperty @Obj,'status',@HTTPStatus OUT INSERT #xml ( yourXML ) EXEC @Result = sp_OAGetProperty @Obj,'responseXML.xml'--,@Response OUT SELECT yourXML.value('(//GeocodeResponse/status)[1]','VARCHAR(MAX)') from #xml
为了插入子字符串,您需要执行类似这样的操作以返回管道后的所有内容并添加到表中:
INSERT tableDestination (valueDestination) SELECT substring(yourXML.value('(//response/comment)[1]','VARCHAR(MAX)'),charindex('|',yourXML.value('(//response/comment)[1]',1)+1,len(yourXML.value('(//response/comment)','VARCHAR(MAX)'))) from #xml
.net – 如何使用LINQ to XML读取/写入加密的XML文件?
我确实尝试过,但你不能将CryptoStream设置为读/写访问权限.它只支持Read或Write,这会导致LINQ to XML抛出异常.
更新:“动态”读取/写入文档会很好,但我只需要读取加密的xml文件,对其进行操作,然后再将其写回加密.
解决方法
XDocument writeContacts = new XDocument( new XElement("contacts",new XElement("contact",new XElement("name","Patrick Hines"),new XElement("phone","206-555-0144",new XAttribute("type","home")),"425-555-0145","work")),new XElement("address",new XElement("street1","123 Main St"),new XElement("city","Mercer Island"),new XElement("state","WA"),new XElement("postal","68042") ) ) ) ); Rijndael RijndaelAlg = Rijndael.Create(); FileStream writeStream = File.Open("data.xml",FileMode.Create); CryptoStream cStream = new CryptoStream(writeStream,RijndaelAlg.CreateEncryptor(RijndaelAlg.Key,RijndaelAlg.IV),CryptoStreamMode.Write); StreamWriter writer = new StreamWriter(cStream); writeContacts.Save(writer); writer.Flush(); writer.Close(); FileStream readStream = File.OpenRead("data.xml"); cStream = new CryptoStream(readStream,RijndaelAlg.CreateDecryptor(RijndaelAlg.Key,CryptoStreamMode.Read); XmlTextReader reader = new XmlTextReader(cStream); XDocument readContacts = XDocument.Load(reader); //manipulate with Linq and Save() when needed
将您最喜欢的ICryptoTransform交换到CryptoStream中.
c# – 如何从url读取csv文件?
解决方法
public string GetCSV(string url) { HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url); HttpWebResponse resp = (HttpWebResponse)req.GetResponse(); StreamReader sr = new StreamReader(resp.GetResponseStream()); string results = sr.ReadToEnd(); sr.Close(); return results; }
然后拆分它:
public static void SplitCSV() { List<string> splitted = new List<string>(); string fileList = getCSV("http://www.google.com"); string[] tempStr; tempStr = fileList.Split(','); foreach (string item in tempStr) { if (!string.IsNullOrWhiteSpace(item)) { splitted.Add(item); } } }
虽然有很多的CSV解析器在那里,我建议不要滚动自己的. FileHelpers是一个很好的.
c# – 如何使用Web代理从Internet读取XML?
这是这个问题的后续行动:How to load XML into a DataTable?
我想将互联网上的XML文件读入DataTable. XML文件位于:http://rates.fxcm.com/RatesXML
如果我做:
public DataTable GetCurrentFxPrices(string url)
{
WebProxy wp = new WebProxy("http://mywebproxy:8080", true);
wp.Credentials = CredentialCache.DefaultCredentials;
WebClient wc = new WebClient();
wc.Proxy = wp;
MemoryStream ms = new MemoryStream(wc.DownloadData(url));
DataSet ds = new DataSet("fxPrices");
ds.readxml(ms);
DataTable dt = ds.Tables["Rate"];
return dt;
}
它工作正常.我正在努力如何在Internet Explorer中使用默认代理集.我不想硬编码代理.如果在Internet Explorer中未指定代理,我还希望代码能够正常工作.
解决方法:
您可以使用Console.WriteLine(System.Net.WebProxy.GetDefaultProxy().Address.AbsoluteUri); …
C#中如何使用 XmlReader 读取XML文件
XmlReader通过向前读取文档并识别读取到的元素,为我们提供了一种消耗资源最少的方式来解析XML数据。很多时候我们都是利用XmlReader来对XML文件的数据有效性进行验证(使用XmlReader实例的Read()方法依次读取所有节点,以此判断是否与符合指定的模式)。使用这种非缓存、只读、只向前的方式,每次读取只将很少的数据放入内存,对内存的占用量较小,对于读取内容较大的XML文件不失为一种最佳的选择。
让我们看看XmlReader类读取XML文件的步骤:
1、使用XmlReader类的Create()工厂方法创建该类的一个实例,并将被读取的XML文件名作为参数传入方法;
2、建立一个反复调用Read()方法的循环。这个方法从文件的第一个节点开始,然后读取所有余下的节点,但每次调用只读取一个节点。如果存在一个节点可被读取则返回True,而当到达文件最后时则返回False;
3、在这个循环中,将检查XmlReader实例的属性和方法,以获得关于当前节点的信息(节点的类型、名称、数据等)。不断执行循环直到Read()返回False;
下面首先看一个示例:
Employees.xml文件:
<?xml version='1.0'?> <employees> <employee id="1"> <name> <firstName>Nancy</firstName> <lastName>Davolio</lastName> </name> <city>Seattle</city> <state>WA</state> <zipCode>98122</zipCode> </employee> <employee id="2"> <name> <firstName>Andrew</firstName> <lastName>Fuller</lastName> </name> <city>Tacoma</city> <state>WA</state> <zipCode>98401</zipCode> </employee> </employees>
aspx代码:
<%@ Page Language="C#" %> <%@ Import Namespace="System.Xml" %> <script runat="server"> void Page_Load(object sender,EventArgs e) { //Location of XML file string xmlFilePath = Server.MapPath("~/Employees.xml"); try { using (XmlReader reader = XmlReader.Create(xmlFilePath)) { string result; while (reader.Read()) { //Process only the elements if (reader.NodeType == XmlNodeType.Element) { result = ""; for (int count = 1; count <= reader.Depth; count++) { result += "==="; } result += "=> " + reader.Name + "<br/>"; lblResult.Text += result; } } } } catch (Exception ex) { lblResult.Text = "An Exception occurred: " + ex.Message; } } </script> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title>Reading an XML File using XmlReader</title> </head> <body> <form id="form1" runat="server"> <div> <asp:label id="lblResult" runat="server" /> </div> </form> </body> </html>
输出结果:
=> employees
====> employee
=======> name
==========> firstName
==========> lastName
=======> city
=======> state
=======> zipCode
====> employee
=======> name
==========> firstName
==========> lastName
=======> city
=======> state
=======> zipCode
下面让我们看看XmlReader类的属性和方法:
属 性 | 说 明 |
---|---|
AttributeCount | 返回当前节点的属性个数 |
Depth | 返回当前节点的深度,用于判断指定的节点是否具有子节点 |
EOF | 判断读取器是否位于流的末端 |
HasAttribute | 返回指示当前节点是否具有属性的布尔值 |
HasValue | 返回指示当前节点是否具有值的布尔值 |
IsEmptyElement | 判断当前节点是否是一个空元素 |
LocalName | 返回当前节点的本地名称 |
Name | 返回当前节点的限定名称 |
NamespaceURI | 返回当前节点的命名空间URI |
NodeType | 以XmlNodeType枚举的形式返回当前节点的节点类型 |
Prefix | 返回与当前节点相关的命名空间前缀 |
ReadState | 以ReadState枚举的形式返回读取器的当前状态 |
Settings | 返回用于创建XMLReader实例的XmlReaderSettings对象 |
Value | 返回当前节点的值 |
ValueType | 获得当前节点的CLR类型 |
XmlReader类的重要方法:
方 法 | 说 明 |
---|---|
Close | 通过将ReadState枚举设置为Closed来关闭Xmlreader对象 |
Create | 创建XMLReader对象的实例并将其返回给调用程序 |
GetAttribute | 获得属性的值 |
IsstartElement | 指示当前节点是否是开始标签 |
MovetoAttribute | 移动读取器到指定的属性 |
MovetoContent | 如果当前节点不是内容节点,则移动读取器至下一个内容节点 |
MovetoElement | 移动读取器至包含当前属性的元素;用于列举属性以及想切换至包含所有这些属性的元素 |
MovetoFirstAttribute | 移动读取器至当前节点的第一个属性 |
MovetoNextAttribute | 移动读取器至当前节点的下一个属性 |
Read | 从流中读取下一个节点 |
ReadContentAs | 读取提供类型的对象的内容 |
ReadElementContentAs | 读取当前元素并返回指定类型对象的内容 |
ReadEndElement | 移动读取器越过当前结束标签并移动到下一个节点 |
ReadInnerXml | 以字符串的形式读取包括标记在内的当前节点所有内容 |
ReadOutXml | 读取包括当前节点标记和子节点在内的节点的内容 |
ReadToDescendant | 移动读取器至下一个匹配子孙元素的节点 |
ReadToFollowing | 不断读取直至找到指定的元素 |
ReadToNextSlibing | 移动读取器至下一个匹配兄弟元素的节点 |
ReadValueChunk | 允许读取嵌入在XML文档中的大型文本流 |
XmlNodeType枚举的成员:
成 员 | 说 明 |
---|---|
Attribute | 属性 |
CDATA | CDATA区域 |
Comment | XML注释 |
Document | 文档对象,表示XML树的根 |
DocumentFragment | 文档片断 |
DocumentType | 文档类型声明 |
Element,EndElement | 开始元素和结束元素 |
Entity,EndEntity | 开始实体声明和结束实体声明 |
EntityReference | 实体引用(如<) |
None | 有没有读取节点而查询节点类型时使用 |
Notation | DTD中的符号条目 |
ProcessingInstruction | XML处理指令 |
SignificantWhitespace | 在混合内容模型文档中的空白,或者设置了xml:space=preserve时使用 |
Text | 元素的文本内容 |
Whitespace | 标记之间的空白 |
XmlDeclaration | 在文档顶部的XML声明 |
XmlReaderSettings类的重要属性:
属 性 | 说 明 |
---|---|
CheckCharacters | 允许你获得或者设置用于指示是否执行字符检查的值 |
ConformanceLevel | 获得或设置XmlReader对象的符合要求 |
IgnoreComment | 允许你获得或设置用于指示是否忽略注释的值 |
IgnoreProcessingInstruct |
指定是否忽略处理指令 |
IgnoreWhitespace | 指定是否忽略无意义的空格 |
ProhibitDtd | 指定是否允许DTD处理 |
Schemas | 指定在执行XML验证时使用的XmlSchemaSet |
ValidationFlags | 获得或者设置用于指定模式验证设置的值 |
ValidationType | 获得或者设置用于指定所执行的验证类型的值 |
XmlResolver | 设置用于访问外部文档的XmlReslover |
通过XmlReaderSettings类,你可以指定一系列由XmlReader对象支持的功能,为此,只需将XmlReaderSettings作为参数传入XmlReader的Create()方法中即可。如下所示:
<script runat="server"> void Page_Load(object sender,EventArgs e) { string xmlFilePath = Server.Mappath("~/Employees.xml"); //Create the XmlReaderSettings object and set appropriate properties XmlReaderSettings settings = new XmlReaderSettings(); settings.IgnoreComments = true; settings.IgnoreWhitespace = true; try { //Get reference to the XmlReader object using (XmlReader reader = XmlReader.Create(xmlFilePath,settings)) { string result; while (reader.Read()) { //Process only the elements if (reader.NodeType == XmlNodeType.Element) { //Reset the variable for a new element result = ""; for (int count = 1; count <= reader.Depth; count++) { result += "==="; } result += "=> " + reader.Name + "<br/>"; lblResult.Text += result; } } } } catch (Exception ex) { lblResult.Text = "An Exception occurred: " + ex.Message; } } </script>
总结下来,我们可以使用XmlReader类以非缓存、只读、只向前的方式读取XML文件,这种方法占用内存少,推荐大家使用。
关于如何使用T-SQL从URL读取XML?的介绍现已完结,谢谢您的耐心阅读,如果想了解更多关于.net – 如何使用LINQ to XML读取/写入加密的XML文件?、c# – 如何从url读取csv文件?、c# – 如何使用Web代理从Internet读取XML?、C#中如何使用 XmlReader 读取XML文件的相关知识,请在本站寻找。
本文标签: