【问题标题】:Read XML values Webservice读取 XML 值 Web 服务
【发布时间】:2012-08-30 11:17:45
【问题描述】:

我想在运行时读取 xml,而不是保存在路径上

经过我的搜索,我发现,在控制台应用程序中,我需要使用 Console.Out 来显示结果

xmlSerializer.Serialize(Console.Out, patient);

在 Windows / Web 应用程序中我们需要设置路径

StreamWriter streamWriter = new StreamWriter(@"C:\test.xml");

但是我需要读取xml而不保存它,我正在使用Webserive,我需要读取它并决定它是否有效

希望我定义清楚..

【问题讨论】:

    标签: c# asp.net xml web-services


    【解决方案1】:

    使用XmlDocument 对象。
    有几种加载 XML 的方法,您可以使用 XmlDocument.Load() 并在其中指定您的 URL 或使用 XmlDocument.LoadXml() 从字符串加载 XML。

    【讨论】:

      【解决方案2】:

      您可以使用XmlDocument.LoadXml 类来读取接收到的xml。无需将其保存到磁盘。

      try
      {
          XmlDocument doc = new XmlDocument();
          doc.LoadXml(receivedXMLStr);
          //valid xml
      }
      catch (XmlException xe)
      { 
          //invalid xml
      }
      

      【讨论】:

        【解决方案3】:

        使用 Linq2Xml..

        XElement doc;
        try
        {
        doc=XElement.Load(yourStream);
        }
        catch
        {
        //invalid XML
        }
        
        foreach(XElement node in doc.Descendants())
        {
        node.Value;//value of this node
        nodes.Attributes();//all the attributes of this node
        }
        

        【讨论】:

          【解决方案4】:

          感谢大家的回复,我想加载我的 XML 而不将其保存在本地路径上,因为节省了创建许多 XML。

          最后我找到了在内存流上从类中加载 XML 的解决方案,我认为这个解决方案非常简单并且可以优化

          XmlDocument doc = new XmlDocument();
          System.Xml.Serialization.XmlSerializer serializer2 = new System.Xml.Serialization.XmlSerializer(Patients.GetType());
          System.IO.MemoryStream stream = new System.IO.MemoryStream();
          serializer2.Serialize(stream, Patients);
          stream.Position = 0;
          doc.Load(stream);
          

          【讨论】:

            【解决方案5】:

            您需要使用Deserialize 选项来读取xml。请按照以下步骤来实现它,

            1. 创建一个目标类。它的结构应该代表 xml 输出。
            2. 创建类后,使用以下代码将您的 xml 加载到目标对象中

              TargetType result = null;
              XmlSerializer worker = new XmlSerializer(typeof(TargetType));
              result = worker.Deserialize("<xml>.....</xml>");
              

            现在xml被加载到对象'result'中并使用它。

            【讨论】:

            • 我有一类患者,使用此类创建 XML,现在我需要将此 XML 加载到字符串或流中,而不是使用路径和 console.out 保存它。 string xml = "使用 Patient 类创建的 XML 标签"。结果 = worker.Deserialize(".....");但我不明白为什么我在这里将 XML 作为字符串传递。我想在字符串中加载 XML
            • 这个链接可以帮助你理解c-sharpcorner.com/UploadFile/Nimusoft/…的概念
            • 经过审查发现XML是使用以下代码保存的 StreamWriter streamWriter = new StreamWriter(@"C:\test.xml");但我不想保存它,因为我每天有超过 400 -800 个 XML 数量,如果我保存它,它会产生另一个问题......我需要将它加载到字符串或任何其他东西中用我的 XSD 验证它。目前我将 XML 保存在路径上而不是使用 XSD 验证它,但我尝试对其进行优化,而不保存验证它并决定它的写入或错误谢谢
            猜你喜欢
            • 2012-01-17
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2015-07-26
            • 2010-09-08
            • 1970-01-01
            相关资源
            最近更新 更多