Я немного запутался о вашем примере, потому что переключение между строкой (текстового содержимого), теги и атрибуты. Но я думаю, что вы хотите XPath.
Так что, если ваш поток XML выглядит следующим образом:
< adeena/> < родитель > < ребенок х = "это моя огромная строка" > Это еще одна удивительная строка < ребенок/> < adeena/>
Вы бы использовать выражение XPath, который выглядит, как это найти атрибут:
// ребенок/@ х
и один, как это, чтобы найти значение текста под ребенка тег:
// ребенок
Я разработчик Java, так что я не знаю, что XML библиотеки, которые вы хотите использовать для сделай это. Но вам понадобится парсер DOM для создания экземпляра класса документа W3C для вас, прочитав в файле XML, а затем используя XPath, чтобы вырвать значения.
Если вам это нужно, то XPath tutorial from the W3C schools.
UPDATE:
Если вы говорите, что у вас уже есть поток XML, как String, то ответ не читать его из файла, а из самой строки. Java имеет абстракции, называемые InputStream и Reader, которые обрабатывают потоки байтов и символов соответственно. Источником может быть файл, строка и т. Д. Проверьте свой C# DOM API, чтобы увидеть, есть ли у него что-то подобное. Вы передадите строку в синтаксический анализатор, который вернет объект DOM, с которым вы можете манипулировать.
Это похоже на то, что я хочу сделать. Но вместо того, чтобы работать с «XDocument», могу ли я сделать это с помощью Xelement? В принципе, я могу установить свою строку как XElement с этим: «Элемент XElement = XElement.Parse (@myXMLstring);» где у меня есть в строке. Затем я могу проверить, имеет ли он * дочерние элементы с элементом element.HasElements. дочерние элементы, как мне их вернуть? все дети не являются обязательными ... я должен сделать тест, чтобы увидеть, есть ли там каждый из них? –
adeena
уверен, что я обновил пример до лучших из моих представлений о том, что он которые вы хотите сделать. Он в основном выбирает элементы, которые вы указываете (разделенные символом |), в совпадения. Затем перебираем найденные элементы (если они есть) и обрабатываем их по-разному. Вам не нужно проверять, есть ли каждый из них, если они не там, они просто не выбраны в матчи. –
прохладный. Это похоже на то, что я хочу сделать. Одна проблема с «IEnumerable» ... Я получаю следующую ошибку: «Usnig generic type». System.Collections.Generic.IEnumerable требует аргументов типа «1»? –
adeena