2016-07-11 2 views
0

Я вижу несколько вопросов, которые близки к этому, но никто точно не покрывающие его:преобразования XML вернулся из веб-запроса с использованием XLST

я могу что-то вместе с ними, но я беспокоюсь, что прохожу через слишком много шагов, чтобы быть эффективными.

То, что я в настоящее время это, чтобы прочитать XML из HTTP веб-запроса:

 WebRequest request = WebRequest.Create(url); 
     WebResponse response = request.GetResponse(); 
     Stream stream = response.GetResponseStream(); 
     StreamReader streamReader = new StreamReader(stream); 
     string xml = streamReader.ReadToEnd(); 

Это было до того, необходимость применения необходима трансформирующего XLST. Теперь у меня есть (возможно, нулевой) объект XslCompiledTransform.

Так что я хочу, чтобы добавить блок, как:

if(transform != null) 
{ 
    xml = transform.Transform(xml); 
} 

Очевидно, что это невозможно, так как написано. Я вижу, что StringReaders и XmlReaders могут быть созданы, но неэффективно ли получить мой xml в виде строки, а затем вернуть ее обратно в другой объект? Могу ли я использовать объекты stream или streamReader непосредственно для поддержки одного и того же базового потока, но с необязательной трансформацией?

ответ

0

Лично я использовал бы функцию XmlDocument.Load() для загрузки XML из URL-адреса, не используя в этом случае WebRequest.

Вы можете передать XmlDocument прямо на XSLCompiledTransform.Transform().

XmlDocument doc = new XmlDocument(); 
doc.Load(url); 
if (transform != null) 
{ 
XmlDocument tempDoc = new XmlDocument(); 
using (XmlWriter writer = tempDoc.CreateNavigator().AppendChild()) 
{ 
    transform.Transform(doc, writer); 
} 
doc = tempDoc; 
} //Use your XmlDocument for your transformed output 
+0

Моей проблемой может быть не преобразование, и я не хочу двух совершенно разных кодов кода. Может быть, я просто не знаком с этими классами, чтобы понять, как это будет висеть вместе ... не могли бы вы предоставить код (псевдо-штраф)? –

+0

См. Код в ответе - спасибо за добавление! –

Смежные вопросы