我有一个复杂的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
我是否可以删除/处理此问题,因为我需要使用元素名称和子名称进行进一步过滤。
答案 0 :(得分:2)
XElement.Name
不是(正如您所料)String
,而是具有XName
属性的LocalName
,因此:
Console.WriteLine(node.Name.LocalName);
答案 1 :(得分:0)
您可能想要删除命名空间。删除命名空间的一种方法是编写c#代码,其他方法是使用Remove Namespace中建议的XSLT转换 -Milind