Вопрос по xmlns для файла XML в C # - PullRequest
1 голос
/ 13 декабря 2010

Я задаю вопрос, потому что не понимаю ключевые слова xmlns, xmlns:xsd и xmlns:xsi.

Я нашел пример для метода XpathNavigator MoveToChile, так как он прикрепил также пример файла xml.

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

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

Пример XML-файла из MSDN.

<?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>

Не могли бы вы описать разницу для xmlns, xmlns:xsd и xmlns:xsi. Чем я могу заменить http://www.contoso.com/books в моем случае? или я могу просто вставить другой xmlns как xmlns="http://www.mycase.com"?

Или мне не нужно просто включать 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 Ответ

1 голос
/ 13 декабря 2010

Ознакомьтесь с этим руководством по пространствам имен XML .

По сути, вы определяете префикс для своего пространства имен 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" />

Те элементы, которые входят в пространство имен default , вероятно, вам больше всего нужны, поэтому вы можете определить одно пространство имен 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>) являются частью вашего default пространства имен XML.

...