Сохраните HTML-тэги в XML, использующем LINQ для XML

Как отмечают другие в комментариях. В вашем коде на данный момент вы получаете ожидаемый результат, так как r и r1 являются экземплярами класса. Если вы хотите дифференцировать ваши экземпляры на основе имени и хотите вернуть то же самое, вы можете передать аргумент name и определить __repr__ для представления вашего вывода при вызове str(instance). Просто подумаю:

class Robot():
    """Test class"""
    def __init__(self, age, name):
        self.age = age
        self.name = name

    def __repr__(self):
        return self.name

r = Robot(10,'r')
r1 = Robot(15,'r1')

mylist1 = [r, r1]
mylist2 = []

for item in mylist1:
    mylist2.append(item)
print(mylist2)

Результат:

[r, r1]

В противном случае можно использовать словарь для отображения

class Robot():
    """Test class"""
    def __init__(self, age,name):
        self.age = age
        self.name=name

r = Robot(10,'r')
r1 = Robot(15,'r1')

mylist1 = [r, r1]
d={}

for item in mylist1:
    d[item.name]=item
print(d)

Вывод

[ 113]
5
задан David Gouge 19 January 2009 в 16:23
поделиться

2 ответа

Звонить t.ToString() вместо Value. Это возвратит XML как строку. Можно хотеть использовать взятие перегрузки SaveOptions для отключения форматирования. Я не могу проверить прямо сейчас, но я подозреваю, что это будет включать тег элементов (и элементы), таким образом, необходимо было бы снять изоляцию с этого.

Обратите внимание, что, если Ваш HTML не является допустимым XML, Вы закончите с недопустимым полным XML-файлом.

Формат XML-файла полностью из Вашего управления? Было бы более хорошо для любого HTML внутри быть XML-закодированным.

Править: Один способ постараться не получать внешнюю часть мог бы состоять в том, чтобы сделать что-то вроде этого (в отдельном методе, названном от Вашего запроса, конечно):

StringBuilder builder = new StringBuilder();
foreach (XNode node in element.Nodes())
{
    builder.Append(node.ToString());
}

Тем путем Вы получите элементы HTML с их потомками и вкрапленными текстовыми узлами. В основном это - эквивалент InnerXml, я сильно подозреваю.

8
ответ дан 14 December 2019 в 01:19
поделиться

TipText = t. Значение,

XElement.value возвращает только текст, который является непосредственно в элементе. Текст во вложенных элементах - HTML или иначе - не будет включен, и конечно любой &-entity-references появится в их декодируемой форме.

Если Вы хотите содержание как строку с разметкой, Вы могли бы позвонить XElement. ToString (), возможно с SaveOptions. DisableFormatting. Но обратите внимание, что это включает переносящийся <подсказка> элемент - то есть, в веб-браузере условия DOM, это - outerHTML не innerHTML. Для получения innerHTML, необходимо было бы объединиться весь ToString () s ребенка XElement. Узлы.

0
ответ дан 14 December 2019 в 01:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: