0

パスに保存せずに、実行時にxmlを読み取りたい

検索した結果、コンソールアプリケーションでは、結果を表示するために Console.Out を使用する必要があることがわかりました

xmlSerializer.Serialize(Console.Out, patient);

Windows / Web アプリケーションでは、次のようにパスを設定する必要があります

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

しかし、保存せずに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

返信ありがとうございます。多くの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 に答える
0

Deserializexml を読み取るには、オプションを使用する必要があります。それを達成するには、以下の手順に従ってください。

  1. ターゲット クラスを作成します。この構造は、xml 出力を表す必要があります。
  2. クラスを作成したら、以下のコードを使用して xml をターゲット オブジェクトにロードします。

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

これで、xml がオブジェクト 'result' にロードされ、それが使用されます。

于 2012-08-30T11:39:42.180 に答える