Я хочу удалить весь недопустимый текст из документа XML.Я считаю любой текст, не заключенный в скобки <> XML, недействительным и хочу удалить его перед переводом.
Из этого поста Регулярное выражение для удаления текста вне тегов в строке - объясняется, как сопоставлять скобки XML вместе.Однако в моем примере он не очищает текст вне XML, как видно в этом примере.https://regex101.com/r/6iUyia/1
Я не думаю, что этот конкретный пример был задан на S / O ранее из моего первоначального исследования.
В настоящее время в моем коде у меня есть этот XML в виде строки, прежде чем я позже создам из него XDocument.Таким образом, у меня потенциально есть строковые методы, методы Regex и XDocument, чтобы помочь в их удалении, кроме того, в этих документах может содержаться более одного недопустимого XML-кода.Кроме того, я не хочу использовать XSLT для удаления этих значений.
Одна из самых элементарных идей, которые я пытался и не смог составить, заключалась в том, чтобы перебирать строку как массив символов и пытаться удалить ее, если она находится за пределами «>» и «<», но решила тамдолжен быть лучший способ добиться этого (отсюда и вопрос) </p>
Это пример ввода с недопустимым текстом, отображаемым между вложенным-A и вложенным-B
<ASchema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xdt="http://www.w3.org/2005/xpath-datatypes" xmlns:fn="http://www.w3.org/2005/xpath-functions">
<A>
<nested-A>valid text</nested-A>
Remove text not inside valid xml braces
<nested-B>more valid text here</nested-B>
</A>
</ASchema>
Iожидаем, что вывод будет в формате, подобном приведенному ниже.
<ASchema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xdt="http://www.w3.org/2005/xpath-datatypes" xmlns:fn="http://www.w3.org/2005/xpath-functions">
<A>
<nested-A>valid text</nested-A>
<nested-B>more valid text here</nested-B>
</A>
</ASchema>