Как получить путь элемента в lxml?

используйте DeploymentItem атрибут

using System;
using System.IO;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using CarMaker;

namespace DeploymentTest
{
    [TestClass]
    public class UnitTest1
    {
        [TestMethod()]
        [DeploymentItem("testFile1.xml")]
        public void ConstructorTest()
        {
            string file = "testFile1.xml";
            Assert.IsTrue(File.Exists(file), "deployment failed: " + file +
                " did not get deployed");
        }
    }
}

30
задан Fluffy 16 October 2009 в 10:24
поделиться

2 ответа

Использовать getpath из объектов ElementTree.

from lxml import etree

root = etree.fromstring('<foo><bar>Data</bar><bar><baz>data</baz>'
                        '<baz>data</baz></bar></foo>')

tree = etree.ElementTree(root)
for e in root.iter():
    print tree.getpath(e)

Печать

/foo
/foo/bar[1]
/foo/bar[2]
/foo/bar[2]/baz[1]
/foo/bar[2]/baz[2]
54
ответ дан 27 November 2019 в 23:15
поделиться

См. Xpath и XSLT с lxml из документация lxml Здесь указывается путь к элементу, содержащему текст

Примером может быть

import cStringIO
from lxml import etree

f = cStringIO.StringIO('<foo><bar><x1>hello</x1><x1>world</x1></bar></foo>')
tree = lxml.etree.parse(f)
find_text = etree.XPath("//text()")

# and print out the required data
print [tree.getpath( text.getparent()) for text in find_text(tree)]

# answer I get is 
>>> ['/foo/bar/x1[1]', '/foo/bar/x1[2]']
19
ответ дан 27 November 2019 в 23:15
поделиться
Другие вопросы по тегам:

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