我在XML文件中看到以下行:
xmlns:android="http://schemas.android.com/apk/res/android"
Run Code Online (Sandbox Code Playgroud)
我xmlns在许多其他XML文件中也看到了我遇到过的问题.
它是什么?
这是app我从res/menu/main.xml文件中看到的命名空间的示例
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context=".MainActivity" >
<item android:id="@+id/action_settings"
android:title="@string/action_settings"
android:orderInCategory="100"
app:showAsAction="never" />
</menu>
Run Code Online (Sandbox Code Playgroud)
app命名空间的用途是什么?它是"标准"Android XML命名空间吗?是否有相同的值选项可用于放置在两个不同命名空间中的相同属性(例如app:showAsAction和android:showAsAction).
来自文档:
android:showAsAction=["ifRoom" | "never" | "withText" | "always" | "collapseActionView"]
即,如果属性是相反的,上面示例中的行是否意味着其他内容:
android:showAsAction="never"
Run Code Online (Sandbox Code Playgroud)
它几乎看起来可能是某种"子类化"机制,但我似乎无法app从Google/Android源代码中找到关于命名空间的任何真实文档.
xml android xml-namespaces android-layout android-tools-namespace
我有以下XML,我想用Python解析ElementTree:
<rdf:RDF xml:base="http://dbpedia.org/ontology/"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:owl="http://www.w3.org/2002/07/owl#"
xmlns:xsd="http://www.w3.org/2001/XMLSchema#"
xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
xmlns="http://dbpedia.org/ontology/">
<owl:Class rdf:about="http://dbpedia.org/ontology/BasketballLeague">
<rdfs:label xml:lang="en">basketball league</rdfs:label>
<rdfs:comment xml:lang="en">
a group of sports teams that compete against each other
in Basketball
</rdfs:comment>
</owl:Class>
</rdf:RDF>
Run Code Online (Sandbox Code Playgroud)
我想找到所有owl:Class标签,然后提取其中所有rdfs:label实例的值.我使用以下代码:
tree = ET.parse("filename")
root = tree.getroot()
root.findall('owl:Class')
Run Code Online (Sandbox Code Playgroud)
由于命名空间,我收到以下错误.
SyntaxError: prefix 'owl' not found in prefix map
Run Code Online (Sandbox Code Playgroud)
我尝试在http://effbot.org/zone/element-namespaces.htm上阅读该文档,但由于上述XML具有多个嵌套命名空间,因此我仍然无法正常工作.
请告诉我如何更改代码以查找所有owl:Class标签.
为什么在xml布局文件中需要这一行?
xmlns:android="http://schemas.android.com/apk/res/android"
Run Code Online (Sandbox Code Playgroud) 我已经看到有关如何最好地实现Open Graph命名空间的相互矛盾的信息.具体来说,Open Graph网站使用了一些不同的方法,而Facebook Open Graph示例则使用其他方法.
Open Graph网站示例(使用HTML前缀属性):
<html prefix="og: http://ogp.me/ns#">
Run Code Online (Sandbox Code Playgroud)
Open Graph网站源代码(使用HTML XMLNS属性):
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:og="http://ogp.me/ns#">
Run Code Online (Sandbox Code Playgroud)
Facebook Open Graph文档(使用HEAD前缀属性):
<head prefix="og: http://ogp.me/ns# fb: http://ogp.me/ns/fb#">
Run Code Online (Sandbox Code Playgroud)
Facebook Open Graph文档#2(使用HTML XMLNS属性):
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:og="http://ogp.me/ns#"
xmlns:fb="https://www.facebook.com/2008/fbml">
Run Code Online (Sandbox Code Playgroud)
什么是推荐的方法或甚至不重要?
从.NET中的XmlDocument生成XML时,xmlns第一次插入没有关联命名空间的元素时会出现空白属性.怎么能防止这种情况?
例:
XmlDocument xml = new XmlDocument();
xml.AppendChild(xml.CreateElement("root",
"whatever:name-space-1.0"));
xml.DocumentElement.AppendChild(xml.CreateElement("loner"));
Console.WriteLine(xml.OuterXml);
Run Code Online (Sandbox Code Playgroud)
输出:
<root xmlns="whatever:name-space-1.0"><loner xmlns="" /></root>
Run Code Online (Sandbox Code Playgroud)
期望的输出:
<root xmlns="whatever:name-space-1.0"><loner /></root>
Run Code Online (Sandbox Code Playgroud)
是否有适用于XmlDocument代码的解决方案,而不是在将文档转换为字符串后出现的问题OuterXml?
我这样做的原因是看看我是否可以使用XmlDocument生成的XML匹配特定协议的标准XML.空白xmlns属性可能不会破坏或混淆解析器,但它在我已经看到的此协议的任何用法中也不存在.
有没有办法让我在.NET中序列化一个对象,而XML Namespaces也不会自动序列化?似乎默认情况下.NET认为应该包含XSI和XSD名称空间,但我不希望它们存在.
我的目标是使用XPath从具有多个名称空间的多个xml文件中提取某些节点.只要我知道名称空间URI,一切正常.命名空间名称本身保持不变,但模式(XSD)有时是客户端生成的,即我不知道.然后我基本上有三种选择:
只使用一个模式用于命名空间,希望没有出错(我能确定吗?)
获取文档的子节点并查找带有命名空间URI的第一个节点,希望它在那里并只使用URI,希望它是正确的.可能由于多种原因而出错
不知何故告诉xpath:"看,我不关心命名空间,只需找到具有此名称的所有节点,我甚至可以告诉您命名空间的名称,而不是URI".这就是问题......
这不是许多"我的xpath表达不起作用的重复,因为我不知道命名空间感知" 这里或这里发现的问题.我知道如何使用命名空间感知.只是没有如何摆脱它.
我通过模式生成器运行了一个xml文件,生成的所有内容都是预期的,除了一个节点:
<xs:element name="office" type="xs:NCName"/>
Run Code Online (Sandbox Code Playgroud)
到底是xs:NCName什么?为什么人们会使用它xs:string呢?
我有以下XML:
<List xmlns="http://schemas.microsoft.com/sharepoint/soap/">
<Fields>
<Field>
</Field>
</Fields>
</List>
Run Code Online (Sandbox Code Playgroud)
这是从SharePoint Web服务返回的XML的精简版本.我也有以下xPath:
/List/Fields/Field
Run Code Online (Sandbox Code Playgroud)
当我xmlns从我的XML中删除xPath工作正常.当它在那里时我的xPath什么都没找到.我的xPath应该做些什么?修改XML不是一种选择.
xml-namespaces ×10
xml ×8
.net ×2
android ×2
xpath ×2
c# ×1
elementtree ×1
facebook ×1
layout ×1
namespaces ×1
opengraph ×1
python ×1
xml-parsing ×1
xmldocument ×1
xsd ×1