C#中xml文件的xmlns问题

时间:2010-12-13 05:47:34

标签: c# xml xml-namespaces

我发布的问题是因为我不理解xmlnsxmlns:xsdxmlns:xsi的关键字。

我找到了一个XpathNavigator MoveToChile方法的示例,并附加了xml文件示例。

XmlDocument document = new XmlDocument();
document.Load("contosoBooks.xml");
XPathNavigator navigator = document.CreateNavigator();

navigator.MoveToChild("bookstore", "http://www.contoso.com/books");

来自MSDN的示例Xml文件。

<?xml version="1.0" encoding="utf-8" ?>
<bookstore xmlns="http://www.contoso.com/books">
    <book genre="autobiography" publicationdate="1981-03-22" ISBN="1-861003-11-0">
        <title>The Autobiography of Benjamin Franklin</title>
        <author>

您能否描述xmlnsxmlns:xsdxmlns:xsi的区别。在我的情况下,我可以用什么来代替http://www.contoso.com/books?或者我可以插入另一个像xmlns="http://www.mycase.com"这样的xmlns?

或者我不需要简单地包含URL。有点像navigator.MoveToChild("bookstore", "");

我的xml文件,

<?xml version="1.0" encoding="UTF-8"?>
<Equipment xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <License licenseId="" licensePath=""/>

赞赏你的回复。

1 个答案:

答案 0 :(得分:1)

查看此tutorial on XML namespaces

基本上,您为XML命名空间定义前缀以使其更易于使用:

<Equipment 
     xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
   <License licenseId="" licensePath=""/>
   <xsd:element ..... xsi:nil="true" />

属于默认命名空间的那些元素可能是您最需要的那些元素,因此您可以定义一个没有前缀的XML命名空间 - 默认命名空间:

<Equipment 
     xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xmlns="http://www.yourcompany.com/your/default/namespace" >
   <License licenseId="" licensePath=""/>
   <xsd:element ..... xsi:nil="true" />

现在,XML中没有特定前缀的所有元素(此处为<License>标记)都是默认 XML命名空间的一部分。