【问题标题】:Read an XML file from http address从 http 地址读取 XML 文件
【发布时间】:2015-03-17 06:38:24
【问题描述】:

我需要使用 c#/.net 从如下来源读取 xml 文件:https://10.1.12.15/xmldata?item=all

这基本上只是一个 xml 文件。

StreamReader 不喜欢这样。

阅读该链接内容的最佳方式是什么?

文件如下所示:

- <RIMP>
     - <HSI>
       <SBSN>CZ325000123</SBSN> 
       <SPN>ProLiant DL380p Gen8</SPN> 
       <UUID>BBBBBBGGGGHHHJJJJ</UUID> 
       <SP>1</SP> 
       <cUUID>0000-000-222-22222-333333333333</cUUID> 
- <VIRTUAL>...

【问题讨论】:

  • @EliGassert:这个问题是基于 HttpWebRequest 和 XmlDocument —— 分别在 C# 中使用 HTTP 和 XML 的两个非常过时的选项。
  • 前两个答案正是他想要做的。接受的答案读取内容,然后将文本加载到 XmlDocument 中;第二个答案显示您可以通过 URL 加载文档,这也是该线程中最热门的答案。

标签: c# asp.net xml stream


【解决方案1】:

您需要使用LINQ to XML 来处理 XML 文件。 XDocument.Load Method 支持从 URI 加载 XML 文档:

var document = XDocument.Load("https://10.1.12.15/xmldata?item=all");

【讨论】:

    【解决方案2】:

    另一种方法是使用XmlDocument 类。世界各地的许多服务器仍在运行 .Net Framework XDocument 旁边,以防您正在开发将在服务器上运行的应用程序。

    string url = @"https://10.1.12.15/xmldata?item=all";
    XmlDocument xmlDoc = new XmlDocument();
    xmlDoc.Load(url);
    

    【讨论】:

    • 这很好用。我只是有点卡在尝试一次读取一个节点。我有这个:&lt;SMB&gt;&lt;FIELD NAME="Product Name" VALUE="ProLiant DL380p Gen8"/&gt; &lt;FIELD NAME="Serial Number" VALUE="12345678"/&gt; &lt;FIELD NAME="UUID" VALUE="BRRTGHHH4529"/&gt; &lt;FIELD NAME="cUUID" VALUE="000000-4139-11111-3332"/&gt;&lt;/SMB&gt; 我只想选择序列号值,我该怎么做,GetAttributeNode("NAME") 只是返回“产品名称”,但我想要序列号的第二个名称和值
    • XmlNode myNode = xmlDoc.GetSingleNode("//FIELD[@NAME='Serial Number']/@VALUE");
    【解决方案3】:

    也许正确的答案必须从阅读有关如何“从 URL(或者在本例中从 Http 地址)读取 XML 文件”的初始问题开始。

    我认为这对你来说是最好的,请看下一个简单的演示:

    (在本例中为 XmlTextReader,但今天您可以使用 XmlReader 而不是 XmlTextReader) http://support.microsoft.com/en-us/kb/307643

    (您也可以阅读此文档)。 https://msdn.microsoft.com/en-us/library/system.xml.xmlreader(v=vs.110).aspx

    问候

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-04-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-20
      • 2012-03-04
      相关资源
      最近更新 更多