Как я могу получить все объекты XmlEntityReference в объекте XmlDocument? - PullRequest
2 голосов
/ 23 ноября 2011

У меня есть ряд XML-документов, из которых я хочу получить все ссылки на сущности и выполнить некоторые обновления документов.Я использую объект XmlDocument для обновления.Каков наилучший способ получить все ссылки на сущности из объекта XmlDocument?

1 Ответ

1 голос
/ 01 февраля 2012

Возможно, это не самое лучшее или наиболее эффективное решение, но в свете того факта, что я не получил никаких других ответов, я пришел к такому выводу:

XmlTextReader reader = new XmlTextReader(stream);
reader.EntityHandling = EntityHandling.ExpandCharEntities;
XmlDocument doc = new XmlDocument();
doc.Load(reader);

List<XmlEntityReference> entityRefs = new List<XmlEntityReference>();
RetrieveEntityRefs(doc.DocumentElement, doc, entityRefs);

private void RetrieveEntityRefs(XmlNode parentNode, XmlDocument doc, List<XmlEntityReference> entityReferences) {
    foreach (XmlNode node in parentNode.ChildNodes)
    {
        if (node.NodeType == XmlNodeType.EntityReference) {
            XmlEntityReference entityRef = node as XmlEntityReference;
            entityReferences.Add(entityRef);
        }
        else if (node.HasChildNodes) {
            RetrieveEntityRefs(node, doc, entityReferences);
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...