C# xslCompiledtransform usando xmldocument ou xPathDocument quando a edição é necessária?
-
19-09-2019 - |
Pergunta
Vou fazer algumas suposições aqui:
- XPathDocument não é editável.
- Xmldocument é editável.
- O XPathDocument é mais eficiente para o XSLCompiledTransform.
Sendo esse o caso (e por favor me corrija se eu estiver errado), seria melhor (mais eficiente) para:
- Faça modificações usando o XMLDocument e converta -se em um XPathDocument antes da transformação. Existe uma maneira otimizada de fazer isso?
- Basta ficar com o XMLDocument através da transformação.
Alguns antecedentes, estou recebendo um XML complexo de um serviço da web e use o XPath para encontrar alguns elementos que precisam ser modificados e, em seguida, use um XSLT para criar HTML.
Obrigado antecipadamente pela ajuda.
Solução
Depende de quanta modificação é necessária, quão grandes são os dados e se você está familiarizado com o XSLT. Se "não" até o último, basta usar XDocument
etc (da última vez que corri um perfil, XDocument
foi mais rápido que XmlDocument
para meus dados - Execute seus próprios testes). Usar XDocument.Load
/ XDocument.Parse
, encontre seu nó, edite -o e salve -o.
Se você devo Use XSLT, então XDocument
Não é realmente uma opção; Depois de carregá -lo em XmlDocument
você pode também fique com XmlDocument
- Eu não recomendaria analisá -lo em um segundo Dom.
Claro, faz nos perguntarmos: por que modificar o xml fora de XSLT se você quiser usar o XSLT; Talvez apenas traduza durante o XSLT?
Para obter uma resposta 100% precisa para seus dados Você precisará o perfil, é claro. Mas coisas como o uso apropriado de construções de agrupamento XSLT geralmente produzem um Muito de diferença maior do que XmlDocument
vs. XPathDocument
.
Outras dicas
Basta usar o XmlDocument
classe para a transformação. Teria que ser um documento enorme para realmente ver um ganho de desempenho. Você pode querer compilar uma instância estática do XslCompiledTransform
Classe se você planeja usá -lo várias vezes.