Как добавить двойные кавычки в атрибуты тега xml, которые являются строковым содержимым - PullRequest
1 голос
/ 09 апреля 2020

У меня есть xml строковое содержимое, перед его синтаксическим анализом я хочу добавить двойные кавычки к атрибутам тега, чтобы оно было действительным xml:

"<fields>
<f id=page-number>OP</f>
<f id=presenter>MA</f>
<f id=title>OPENER</f>
<f id=type>CLIP</f>
<f id=graphic></f>
<f id=video-id></f>
<f id=audiochannel></f>
<f id=event-status></f>
<f id=audio-time uec>26</f>
<f id=back-time uec>@41410</f>
<f id=editor></f>
<f id=total-time>26</f>
<f id=cume-time></f>
<f id=still-id></f>
<f id=app1-1>SF</f>
<f id=var-3></f>
<f id=modify-by>scrivensl</f>
<f id=modify-date>1571272301</f>
<f id=status>OK</f>
<f id=app3-1></f>
<f id=air-date>1571272300</f>
</fields>"

List<string> patternList = new List<string>() {    @"<fields[^>]*>([\s\S]*)</fields>"};
foreach (var item in patternList)
{
  matchedContent = getContent(item, xmlData);
  XElement xmlTree = XElement.Parse(matchedContent);
}

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

public string getContent(string patternToMatch, string content)
{
   // Instantiate the regular expression object.
    Regex r = new Regex(patternToMatch, RegexOptions.IgnoreCase);
     return r.Match(content).ToString();
}

1 Ответ

0 голосов
/ 10 апреля 2020

Ваш текст не HTML, но все же HtmAgilityPack можно использовать для его нормализации.

var orgxml = @"<fields>
<f id=page-number>OP</f>
...
<f id=app3-1></f>
<f id=air-date>1571272300</f>
</fields>";

var doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(orgxml);

string cleanxml;
using (var sw = new StringWriter())
{
    doc.Save(sw);
    cleanxml = sw.ToString();
}

cleanxml теперь содержит

<fields>
<f id="page-number">OP</f>
...
<f id="app3-1"></f>
<f id="air-date">1571272300</f>
</fields>
...