我想在运行时读取xml,而不将其保存在路径上
在我搜索之后,我发现,在控制台应用程序中,我需要使用Console.Out来显示结果
xmlSerializer.Serialize(Console.Out, patient);
在Windows / Web应用程序中,我们需要设置路径,如
StreamWriter streamWriter = new StreamWriter(@"C:\test.xml");
但我需要阅读xml而不保存它,我正在使用Webserive,我需要阅读它并做出有效或无效的决定
我希望我能清楚地定义它......
答案 0 :(得分:0)
使用XmlDocument
对象
有几种方法可以加载XML,您可以使用XmlDocument.Load()
并在其中指定您的URL,或使用XmlDocument.LoadXml()
从字符串加载XML。
答案 1 :(得分:0)
您可以使用XmlDocument.LoadXml类来阅读收到的xml。无需将其保存到磁盘。
try
{
XmlDocument doc = new XmlDocument();
doc.LoadXml(receivedXMLStr);
//valid xml
}
catch (XmlException xe)
{
//invalid xml
}
答案 2 :(得分: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
}
答案 3 :(得分:0)
您需要使用Deserialize
选项来读取xml。按照以下步骤实现它,
创建类后,使用以下代码将xml加载到目标对象
中TargetType result = null;
XmlSerializer worker = new XmlSerializer(typeof(TargetType));
result = worker.Deserialize("<xml>.....</xml>");
现在,xml被加载到对象'result'中并使用它。
答案 4 :(得分: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);