1

我有一个复杂的 XML 文件,其结构如下:

<?xml version="1.0" encoding="UTF-8"?>
<Document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="xxx:xxx:xxx:xxx:xxxxx:xxx:xsd:xxxx.xxx.xxx.xx">
    <Element1>
        <Element2>
            <Element2A>xxxxxx</Element2A>
            <Element2B>2012-08-29T00:00:00</Element2B>
        </Element2>
    </Element1>
</Document>

现在我正在使用 XmlReader 读取这个 XML 文档并处理信息如下

XmlReader xr = XmlReader.Create(filename);
while (xr.Read()) 
{
   xr.MoveToElement();
   XElement node = (XElement)XElement.ReadFrom(xr);
   Console.WriteLine(node.Name);
}
xr.Close();

我面临的问题是在输出中,命名空间以 ElementName 为前缀。例如输出

{xxx:xxx:xxx:xxx:xxxxx:xxx:xsd:xxxx.xxx.xxx.xx}Element1

有什么方法可以删除/处理这个,因为我需要使用元素名称和子名称进行进一步过滤。

4

2 回答 2

2

XElement.Name不是(如您所料) a String,而是XName具有LocalName属性的 a ,因此:

Console.WriteLine(node.Name.LocalName);
于 2012-10-09T10:30:17.333 回答
0

您可能想要删除命名空间。删除命名空间的一种方法是编写 c# 代码,另一种方法是按照删除命名空间 -Milind中的建议使用 XSLT 转换

于 2012-10-09T10:37:23.017 回答