0

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

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

xmlSerializer.Serialize(Console.Out, patient);

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

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

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

我希望我清楚地定义它..

4

5 回答 5

0

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

于 2012-08-30T11:24:28.420 回答
0

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

try
{
    XmlDocument doc = new XmlDocument();
    doc.LoadXml(receivedXMLStr);
    //valid xml
}
catch (XmlException xe)
{ 
    //invalid xml
}
于 2012-08-30T11:25:01.617 回答
0

使用 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
}
于 2012-08-30T11:25:29.043 回答
0

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

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

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

现在 xml 被加载到对象“结果”中并使用它。

于 2012-08-30T11:39:42.180 回答
0

感谢大家的回复,我想加载我的 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);
于 2012-09-05T18:45:49.677 回答