我有一些代码可以使用XmlDocument从具有名称空间的xml文件中读取。我的挑战是我拥有了我正在硬编码的文件的名称空间,并将其传递给XmlNamespaceManager。我希望我的方法是更具灵活性。要读取任何类型的xml文件。如果它具有名称空间,则可以使用名称空间管理器来读取元素,而无需对名称空间进行硬编码。如果文件没有名称空间,则可以继续进行操作解析它。下面是我所做的。

xmldoc = new XmlDocument ();
xmldoc.Load (fileLocation);


XmlNamespaceManager nameSpaceManager = new XmlNamespaceManager(xmldoc.NameTable);

nameSpaceManager.AddNamespace ("ns","http://schemas.sample.data.org/2005");

XmlNodeList nodeList = xmldoc.SelectNodes("/ns:Demo/ns:Items",  nameSpaceManager);
if (nodeList != null) 
{
    foreach (XmlNode childNode in nodeList) 
    {
        string first = childNode.SelectSingleNode ("ns:First", nameSpaceManager).InnerText;
        string second= childNode.SelectSingleNode ("ns:Second", nameSpaceManager).InnerText;
        string third = childNode.SelectSingleNode ("ns:Third", nameSpaceManager).InnerText;
    }
}

这是我正在使用的示例xml文件

<Demo xmlns:i="http://www.justasample.com" xmlns="http://schemas.sample.data.org/2005">
 <Items>

  <First>first</First>
  <Second>second</Second>
  <Third>third</Third>

  </Items>

</Demo>

===============>>#1 票数:17 已采纳

我有一些代码可以使用XmlDocument从具有名称空间的xml文件中读取。我的挑战是我拥有了我正在硬编码的文件的名称空间,并将其传递给XmlNamespaceManager。我希望我的方法是更具灵活性。要读取任何类型的xml文件。如果它具有名称空间,则可以使用名称空间管理器来读取元素,而无需对名称空间进行硬编码。如果文件没有名称空间,则可以继续进行操作解析它。下面是我所做的。

xmldoc = new XmlDocument ();
xmldoc.Load (fileLocation);


XmlNamespaceManager nameSpaceManager = new XmlNamespaceManager(xmldoc.NameTable);

nameSpaceManager.AddNamespace ("ns","http://schemas.sample.data.org/2005");

XmlNodeList nodeList = xmldoc.SelectNodes("/ns:Demo/ns:Items",  nameSpaceManager);
if (nodeList != null) 
{
    foreach (XmlNode childNode in nodeList) 
    {
        string first = childNode.SelectSingleNode ("ns:First", nameSpaceManager).InnerText;
        string second= childNode.SelectSingleNode ("ns:Second", nameSpaceManager).InnerText;
        string third = childNode.SelectSingleNode ("ns:Third", nameSpaceManager).InnerText;
    }
}

这是我正在使用的示例xml文件

<Demo xmlns:i="http://www.justasample.com" xmlns="http://schemas.sample.data.org/2005">
 <Items>

  <First>first</First>
  <Second>second</Second>
  <Third>third</Third>

  </Items>

</Demo>

===============>>#2 票数:1

我有一些代码可以使用XmlDocument从具有名称空间的xml文件中读取。我的挑战是我拥有了我正在硬编码的文件的名称空间,并将其传递给XmlNamespaceManager。我希望我的方法是更具灵活性。要读取任何类型的xml文件。如果它具有名称空间,则可以使用名称空间管理器来读取元素,而无需对名称空间进行硬编码。如果文件没有名称空间,则可以继续进行操作解析它。下面是我所做的。

xmldoc = new XmlDocument ();
xmldoc.Load (fileLocation);


XmlNamespaceManager nameSpaceManager = new XmlNamespaceManager(xmldoc.NameTable);

nameSpaceManager.AddNamespace ("ns","http://schemas.sample.data.org/2005");

XmlNodeList nodeList = xmldoc.SelectNodes("/ns:Demo/ns:Items",  nameSpaceManager);
if (nodeList != null) 
{
    foreach (XmlNode childNode in nodeList) 
    {
        string first = childNode.SelectSingleNode ("ns:First", nameSpaceManager).InnerText;
        string second= childNode.SelectSingleNode ("ns:Second", nameSpaceManager).InnerText;
        string third = childNode.SelectSingleNode ("ns:Third", nameSpaceManager).InnerText;
    }
}

这是我正在使用的示例xml文件

<Demo xmlns:i="http://www.justasample.com" xmlns="http://schemas.sample.data.org/2005">
 <Items>

  <First>first</First>
  <Second>second</Second>
  <Third>third</Third>

  </Items>

</Demo>

===============>>#3 票数:0

我有一些代码可以使用XmlDocument从具有名称空间的xml文件中读取。我的挑战是我拥有了我正在硬编码的文件的名称空间,并将其传递给XmlNamespaceManager。我希望我的方法是更具灵活性。要读取任何类型的xml文件。如果它具有名称空间,则可以使用名称空间管理器来读取元素,而无需对名称空间进行硬编码。如果文件没有名称空间,则可以继续进行操作解析它。下面是我所做的。

xmldoc = new XmlDocument ();
xmldoc.Load (fileLocation);


XmlNamespaceManager nameSpaceManager = new XmlNamespaceManager(xmldoc.NameTable);

nameSpaceManager.AddNamespace ("ns","http://schemas.sample.data.org/2005");

XmlNodeList nodeList = xmldoc.SelectNodes("/ns:Demo/ns:Items",  nameSpaceManager);
if (nodeList != null) 
{
    foreach (XmlNode childNode in nodeList) 
    {
        string first = childNode.SelectSingleNode ("ns:First", nameSpaceManager).InnerText;
        string second= childNode.SelectSingleNode ("ns:Second", nameSpaceManager).InnerText;
        string third = childNode.SelectSingleNode ("ns:Third", nameSpaceManager).InnerText;
    }
}

这是我正在使用的示例xml文件

<Demo xmlns:i="http://www.justasample.com" xmlns="http://schemas.sample.data.org/2005">
 <Items>

  <First>first</First>
  <Second>second</Second>
  <Third>third</Third>

  </Items>

</Demo>

===============>>#4 票数:0

我有一些代码可以使用XmlDocument从具有名称空间的xml文件中读取。我的挑战是我拥有了我正在硬编码的文件的名称空间,并将其传递给XmlNamespaceManager。我希望我的方法是更具灵活性。要读取任何类型的xml文件。如果它具有名称空间,则可以使用名称空间管理器来读取元素,而无需对名称空间进行硬编码。如果文件没有名称空间,则可以继续进行操作解析它。下面是我所做的。

xmldoc = new XmlDocument ();
xmldoc.Load (fileLocation);


XmlNamespaceManager nameSpaceManager = new XmlNamespaceManager(xmldoc.NameTable);

nameSpaceManager.AddNamespace ("ns","http://schemas.sample.data.org/2005");

XmlNodeList nodeList = xmldoc.SelectNodes("/ns:Demo/ns:Items",  nameSpaceManager);
if (nodeList != null) 
{
    foreach (XmlNode childNode in nodeList) 
    {
        string first = childNode.SelectSingleNode ("ns:First", nameSpaceManager).InnerText;
        string second= childNode.SelectSingleNode ("ns:Second", nameSpaceManager).InnerText;
        string third = childNode.SelectSingleNode ("ns:Third", nameSpaceManager).InnerText;
    }
}

这是我正在使用的示例xml文件

<Demo xmlns:i="http://www.justasample.com" xmlns="http://schemas.sample.data.org/2005">
 <Items>

  <First>first</First>
  <Second>second</Second>
  <Third>third</Third>

  </Items>

</Demo>

  ask by naffie translate from so

未解决问题?本站智能推荐:

2回复

使用XmlDocument.CreateElement()创建具有名称空间的XML元素

我正在尝试使用C#和.NET(版本2.0 ..是的,版本2.0)创建XmlDocument 。 我已经使用以下方法设置了名称空间属性: 当我使用以下命令创建新的XmlElement : ...它在最终的XML中不包含soapenv命名空间。 任何想法为什么会发生这种情况?
1回复

为什么XmlDocument具有未在任何地方声明的名称空间(AFAIK)?

题: 我正在使用System.Xml.XmlDocument和XPath查询,以从Microsoft Reporting Services报表中提取信息。 我有以下两个XML文件。 如果要检查第二个文件是否具有名称属性= London的(地名)条目,则可以使用以下XPath查询
1回复

使用C#解析具有多个名称空间的Xml

我一直无法解析包含以下多个名称空间的Xml: 我尝试了以下代码,但是您可以看到具有Soap Name Space的第一个节点可以正常工作,但是此后,我无法检索需要的节点信息,即节点- 这是我尝试的代码: } 这是我根据@LocEngineer的响应尝试的方法:
1回复

如何正确解析具有任意名称空间的XML文档

我试图解析一些标准的XML文档,这些文档使用来自各种来源的名为MARCXML的模式。 以下是需要处理的示例XML文件的前几行... 还有一个没有命名空间前缀...... 关键点:为了让XPath在程序中进一步解析,我必须通过一个正则表达式例程将命名空间添加到NameTabl
1回复

使用XPath Csharp选择带有名称空间的单个xml节点

为什么我的xmlNode节点总是以null结尾? 我放入了它要求的名称空间。 以下是我已加载的xml。 看来我做的一切正确。 我给它了织补名称空间。 但是节点总是以null结尾。
1回复

具有报告服务名称空间枚举的XML没有产生任何结果

我有一个显然包含XML的.rdl文件来生成报告。 我想搜索这个XML,在报告中查找不同的信息。 XML的开头是这样的: 现在我想要所有DataSources并使用此代码: 这段代码在我的许多具有不同命名空间的XML文件中起作用。例如: 但对于带有reportingse
2回复

为什么在构建此XmlDocument时C#删除第二个xml名称空间属性?

我有代码: 我期望输出: 但是我得到的输出是: 在XmlAttribute xsiAttribute上,它带走了“ xsi:”,我不知道为什么。 有什么帮助吗?
3回复

如何使用XmlDocument向根元素添加多个名称空间?

我需要创建一个XmlDocument ,其根元素包含多个名称空间。 我使用的是C#2.0或3.0 这是我的代码: 目前的输出: 但是,我想要的输出是: 我的问题:如何创建一个包含多个名称空间的根元素的XmlDocument ?
1回复

如何使用C#选择具有XML命名空间的XML节点

我必须使用C#分析具有特殊名称空间的XML文档,并且从这篇文章中可以了解到一些想法。 但是我的代码无法获得预期的XML节点,因为XML结构非常特殊... XML的根节点中有一个名称空间 这是我获取此根节点的代码 帮我!
2回复

读取带有/不带有名称空间标签的节点

我需要阅读这样的xml文档: 但是在某些服务器中,xml文档是在没有名称空间标签的情况下实现的: 如何有效阅读两者? (我为每个节点写了if else语句来控制这种情况,但这似乎不是一个好方法)