使用XLinq.XElement读取带Namespace(命名空间)的XML

简介


本文主要介绍通过XELemet去读取含有namespaces(xmlns)的XML,这也是偶然间发现这个问题的,一个群里的小伙伴突然问起这个,以此记录一下。

背景

一个XML文档可能包括来自多个XML词汇表的元素或属性,如果每一个词汇表指派一个命名空间,那么相同名字的元素或属性之间的名称冲突就可以解决。

举一个简单的例子来说,在一个订单的XML文档中需要引用到客户和所购买的产品,customer元素和product元素可能都有一个叫做id的子元素。这时候要引用id元素会造成名称冲突,但是如果将两个id元素放到不同的命名空间中就会解决这个问题。

示例代码


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml.Linq;

namespace XElementReading
{
class Program
{
static string myxml =
@"<root>
<one xmlns:a=‘http://cnkker.com‘>
<a:oneone xmlns:b=‘http://taoqi.com.cn‘>
<b:id>1</b:id>
<b:name></b:name>
</a:oneone>
<a:twotwo xmlns:b=‘http://www.qq.com‘>
<b:id>2</b:id>
<b:name></b:name>
</a:twotwo>
</one>
</root>";

static void Main(string[] args)
{
var elem = XElement.Parse(myxml);
XNamespace nsr = "http://cnkker.com";
XNamespace nsy = "http://taoqi.com.cn";
var t = elem.Element("one").Element(nsr + "oneone").Element(nsy + "id").Value;
Console.WriteLine("Value of id within oneone: {0}", t);
Console.ReadLine();
}
}
}

使用XLinq.XElement读取带Namespace(命名空间)的XML

时间: 2024-10-08 17:36:47

使用XLinq.XElement读取带Namespace(命名空间)的XML的相关文章

读取带命名空间的Xml文档的方法备忘

很久没有做xml方面的解析,今天接到一个小任务,需要解析xml里面的字段内容,顺带复习了一下xpath方面的知识.需要解析的xml是那种待namespace的文档,一开始解析就碰到问题,我就感觉是命名空间在作怪,印象中之前也处理过这种问题,但时间久远,都忘记了,也没有记录下来. 折腾了一会总算找到了方法,.NET中读取带xml命名空间的xml文档的方式确实麻烦,不够直接.不管怎样,还是记录一下解决方法,省得以后又要被折腾一次. StringReader textReader = new Stri

linq 解析 带命名空间的xml

前言:xml的操作方式有多种,但要论使用频繁程度,博主用得最多的还是Linq to xml的方式,觉得它使用起来很方便,就用那么几个方法就能完成简单xml的读写.之前做的一个项目有一个很变态的需求:C#项目调用不知道是什么语言写的一个WebService,然后添加服务引用总是失败,通过代理的方式动态调用也总是报错,最后没办法,通过发送原始的WebRequest请求直接得到对方返回的一个xml文件.注意过webservice的wsdl文件的朋友应该知道这个是系统生成的xml文件,有点复杂,研究了半

XML Namespace 命名空间

根据 Namespaces in XML W3C 推荐标准的定义,XML 命名空间 是由国际化资源标识符 (IRI) 标识的 XML 元素和属性集合:该集合通常称作 XML“词汇”. 定义 XML 命名空间的主要动机之一是在使用和重用多个词汇时避免名称冲突.XML 模式用于为 XML 实例创建一个词汇并频繁使用命名空间.因此,正确理解命名空间概念对于从总体上理解 XML 模式和实例验证至关重要. 命名空间在多个方面类似于 Java 中的程序包: Java 中的程序包可以包含许多可重用的类和接口.

带命名空间的XML的dom4j应用&lt;转&gt;

Element root = document.getRootElement();     List   recordenvlist = document.selectNodes("//gml:envelope");     //gml:envelope 提示 NoClassDefFoundError org.dom4j.DocumentFactory.createXPath 原因:dom4j的xpath api依赖jaxen完成解决方法:在系统中加入jaxen.jar.jaxen.j

namespace 命名空间

一.命名空间的定义 namespace 命名空间的名字 {类/变量/函数/模板/其他命名空间}; 命名空间空间可以定义在全局作用域和其他命名空间中,但不能定义在函数或类的内部. 二.命名空间的作用域 每一个命名空间都是一个作用域,定义在某个命名空间中的名字可以被该命名空间内的其他成员访问,也可以被这些成员的内嵌作用域中的任何单位访问. namespace nsp{ int num=10; class ab { public: int val(){return num;} }; } int val

c#读取带有命名空间的XML

XML文件内容 <?xml version="1.0" standalone="no"?> <svg width="1709px" height="886px" onload="init(evt)" viewBox="0 0 1800 900" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="

用python读取带密码的excel文件中的数据

用python读取带密码的excel文件中的数据,程序代码如下: #filename:readingxls.py ''' 此程序的作用为:用python读取带密码的excel文件中的数据. 首先通过pip安装xlrd第三方库 pip3 install xlrd 请输入excel文件路径:D:\x1.xls ''' import xlrd path=input("请输入excel文件路径:") workbook=xlrd.open_workbook(path) b=len(workboo

python win32com 读取带密码的excel

之前用到的win32com读取带密码excel的相关内容,今天刚好准备整理下,突然发现方法又不灵了. 以下为错误示范: # 已知excel密码去除 def del_password(filename, password): excel = DispatchEx("Excel.Application") # 启动excel excel.Visible = True # 可视化 excel.DisplayAlerts = False # 是否显示警告 wb = excel.Workbook

C# 解析带命名空间的xml

xml <?xml version="1.0" encoding="utf-8"?> <string xmlns="http://tempuri.org/">发票代码:012001800311 发票号码:24961816 开票日期:2019-04-02 购方企业名称:购方纳税号:913101140781x22VV1 销方企业名称:清出公司 销方纳税号:911201163409833307 价税合计:4 金额:94.76 税