C# Linq к XML проверяют, существует ли элемент

Просто добавьте это в конец вашей HTML-страницы ...

<script>
    Your_Function();
</script>

Потому что, документы HTML анализируются сверху вниз.

25
задан Goober 24 June 2009 в 17:12
поделиться

3 ответа

Я предлагаю несколько иной подход к использованию Count () - используйте Any () . Преимущество в том, что Any () может остановиться, как только он получит какие-либо совпадения:

var smsWithNoNumber = main.Descendants("SMS")
                          .Where(x => !x.Elements("Number").Any());

В этом случае это не будет иметь большого значения, но в тех случаях, когда Count () , возможно, придется считать миллион обращений просто для того, чтобы сказать вам, что был хотя бы один, это полезный трюк. Я бы сказал, что это также более четкий индикатор того, что вы имеете в виду.

43
ответ дан 28 November 2019 в 21:04
поделиться

Предполагая, что у вас есть номер в некоторой канонизированной форме и ваш XML загружен в XmlDocument или что-то подобное, самый простой способ сделать это без использования LINQ - это Запрос XPath:

string pattern = String.Format("/Database/SMS/Number[. = '{0}']", number);
if (myDoc.SelectSingleNode(pattern) != null)
{
   // number already exists in document
}
2
ответ дан 28 November 2019 в 21:04
поделиться

Вы можете применить XSL-документ, который переводит данные, перебирая узлы SMS и исключая те, которые имеют повторяющееся значение Number / text ()

Проверка будет примерно так:

<xsl:template match="SMS">
<xsl:variable name="parentNode" select="." />
<xsl:if test="preceding-sibling::SMS/Number/text()=$parentNode/Number/text()">
.....include a copy of node......
</xsl:if>
  </xsl:template>
0
ответ дан 28 November 2019 в 21:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: