Primo Chalice Ответов: 1

Как создать новый xelement для каждого тега </br> В XML на языке C#?


Мой XML содержит следующие данные:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE repub SYSTEM "C:\repub\Repub_V1.dtd">
<?xml-stylesheet href="C:\repub\repub.xsl" type="text/xsl"?>
<repub>
<head>
<title>xxx</title>
</head>
<body>
<sec>
<title>First Title</title>
<break name="1-1"/>
<h1><page num="1"/>First Heading</h1>
<bl>This is another text</bl>
<fig><img src="images/img_1-1.jpg" alt=""/><fc>This is a caption</fc></fig>
<p>This<br/> again is<br/> a paragraph</p>
</sec>
</body>
</repub>


Он содержит тег < p > с несколькими тегами < br />. Я хочу создать новый < p > Для каждого < br />.

Чего я хочу добиться:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE repub SYSTEM "C:\repub\Repub_V1.dtd">
<?xml-stylesheet href="C:\repub\repub.xsl" type="text/xsl"?>
<repub>
<head>
<title>xxx</title>
</head>
<body>
<sec>
<title>First Title</title>
<break name="1-1"/>
<h1><page num="1"/>First Heading</h1>
<bl>This is another text</bl>
<fig><img src="images/img_1-1.jpg" alt=""/><fc>This is a caption</fc></fig>
<p>This</p>
<p>again is</p>
<p>a paragraph</p>
</sec>
</body>
</repub>


Я не знаю, что делать дальше.

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

Я пытаюсь подойти к этому, используя следующий метод:

foreach (var item in xdoc.Descendants("p"))
{
	if (item.Elements("br").Count() > 0)
	{
		foreach (var br in item.Elements("br"))
		{
			//Do something
		}
	}
}

Christian Graus

Я не думаю, что это лучше всего сделать с помощью XML. Вам лучше просто использовать регулярное выражение или строку, затирающую его IMO.

Primo Chalice

Тогда как же мне действовать? Является ли linq хорошим вариантом? Пожалуйста, помогите мне

1 Ответов

Рейтинг:
1

Maciej Los

Я бы настоятельно рекомендовал прочитать об этом XSLT-преобразование[^]

КСТАТИ: ваш исходный xml-файл неверен. Вы не можете использовать XDocument класс, обусловленный тем, что с помощью Load метод вызывает следующую ошибку: Illegal characters in the path.