Member 12692000 Ответов: 1

Как получить значение атрибута узла, содержащего определенную строку?


Как получить значения атрибутов узла, содержащего определенную строку?
Например..
Скажем, у меня есть массив строк или IEnumerable строк, содержащих такие строки, как
x1
А2
как Z5
и т.д.
...

и файл содержит такие узлы, как
<x-aln freq="fq1">abldfls lfds fd \hbox{x1}</x-aln>
<x-aln freq="fq2">abldfls lfds fd \hbox{x2}</x-aln>
<x-aln freq="fq3-5">abldfls lfds fd \hbox{z5} dafdsf \hbox{z6} dsfdsf \hbox{z7}</x-aln>
Как мне найти все строки в массиве, чтобы проверить, находятся ли они внутри любого из них?
\hbox{...}
, если да, то получите значение атрибута freq его родительского узла <x-aln> и хранить их в переменной?

Что я уже пробовал:

Я не могу понять, как я могу это сделать...
Кто-нибудь может помочь??
Пример xml-файла

<?xml version="1.0" encoding="UTF-8"?>
<body>
	<section id="sec1">
		<label>1.</label>
		<title>INTRODUCTION</title>
		<p>Despite the large number of scientific papers devoted to the heart <sup><xref ref-type="bibr" rid="c1">1</xref>–<xref ref-type="bibr" rid="c2">2</xref></sup>, this time to think both home and foreign authors there are many different <xref ref-type="disp-formula" rid="deqn2">2</xref> controversial issues. They are associated with morphological structural features of valvular heart disease and its individual structural components: valves, tendon strings mastoid muscle and fibrous ring <sup><xref ref-type="bibr" rid="c1">1</xref>–<xref ref-type="bibr" rid="c2">2</xref></sup>.</p>
		<section id="sec2">
			<title>INTRO</title>
			<p>All structures are large valvular morphofunctional load.
				<x-aln freq="fq1">abldfls lfds fd \hbox{x1}</x-aln></p>
			<p>According to the classification of tendon <xref ref-type="eqn" rid="fq1a">1</xref> strings of the heart they are classified as boundary, i.e, those that are attached to the <xref ref-type="disp-formula" rid="deqn10">(17)</xref> edges of the leaves, leaf, spot fixing being lower surface of leaf valve (facing the cavity of the ventricle) and abnormally arranged strings.</p>
			<p>Thus detailed knowledge of the structural features of normal tendon strings.
				<x-aln freq="fq2">abldfls lfds fd \hbox{x2}</x-aln></p>
		</section>
	</section>
	<section id="sec3">
		<label>2.</label>
		<title>THE MORPHOLOGY OF CHONDRAE TENDIANEAE</title>
		<section id="sec2a">
			<title>THE MORPHOLOGY</title>
			<p>According to the macroscopic study of tendon strings newborns and infants
				<x-aln freq="fq3-5">abldfls lfds fd \hbox{z5} dafdsf \hbox{z6} dsfdsf \hbox{z7}</x-aln></p>
			<section id="sec5a1">
				<title>THE OML</title>
				<p>Total number of tendon strings are attached to the cusps of <xref ref-type="eqn" rid="fq4">4</xref> atrioventricular valves of the heart in both age groups ranged from 30 to 80.</p>
			</section>
		</section>
	</section>
</body>

Nakhia_ind

какая среда, как sql или c#

Member 12692000

С#

Nakhia_ind

сэр Через некоторое время ответ будет отправлен по ссылке ниже

https://www.codeproject.com/Answers/1222585/How-to-get-the-processing-instruction-value-using#answer1

Если это не полезно пожалуйста передайте мне

Member 12692000

извините, но ссылка, которую вы предоставили, совсем не помогла в моей проблеме.

Nakhia_ind

так что пожалуйста передайте мне полный xml файл

Member 12692000

Я дал вам полный xml-файл для работы ... проверьте обновленный вопрос.

[no name]

Поделитесь кодом C#, который вы пробовали, чтобы можно было проверить ошибку/проблему. Никто не может написать код для этого здесь.

1 Ответов

Рейтинг:
2

Nakhia_ind

сэр сначала создайте xml файл с именем as test1.xml и хранится в папке debug в приложении win учитывая ниже что manupulating ваш первый xml код

<xml>
    <foo>
        <x-aln freq="fq1">abldfls lfds fd \hbox{x1}</x-aln>
<x-aln freq="fq2">abldfls lfds fd \hbox{x2}</x-aln>
<x-aln freq="fq3-5">abldfls lfds fd \hbox{z5} dafdsf \hbox{z6} dsfdsf \hbox{z7}</x-aln>
    </foo>
    <foo id="123">Text 1<moo />Text 2
    </foo>
</xml>


затем код за которым я определяю ниже

private void button5_Click(object sender, EventArgs e)
      {

          string fpath = Application.StartupPath + "\\" + "test1.xml";
          XDocument xele = XDocument.Load(fpath);

          var node = xele.XPathSelectElement("/xml/foo/x-aln[@freq='fq1']");
          var strvalue = node.Value;
          int ind = strvalue.IndexOf('\\');
          string str = "";
          if (strvalue.Substring(ind + 1, 5) == "hbox{")
          {
              int lind = strvalue.LastIndexOf('}');
              str = strvalue.Substring(ind + 6, (lind-(ind + 6)));
              MessageBox.Show(str);
          }



Это дает окно сообщения, но вы можете взять с переменной


Member 12692000

Привет, я хочу получить значение атрибута узла, т. е. так как x1 находится внутри узла <x-aln freq="fq1">abldfls lfds fd \hbox{x1}</x-aln>, так что выход должен получить мне значение attrib freq т.е. fq1, но ваш код выводит x1?

Кстати, мой XPath немного заржавел, можете ли вы показать его с помощью LINQ2XML?