声明为xs:boolean的XML属性可以接受为"true","false","0"或"1".但是,在.NET中,Boolean.Parse()只接受"true"或"false".如果它看到"0"或"1",则抛出"Bad Format"异常.
那么,鉴于此,将这样的值解析为布尔值的最佳方法是什么?
(不幸的是,我只限于.NET 2.0解决方案,但如果v3.5提供了一些东西,我很乐意听到它.)
我在我的Android项目中使用android-support-v7-appcompat作为库.现在我想将actionbarsherlock包含为另一个库项目.当我添加第二个库时,它会产生如下许多错误
android-support-v7-appcompat\res\values\attrs.xml:476: error: Attribute "attributeName" has already been defined
Run Code Online (Sandbox Code Playgroud)
通过更改一个属性值,它的相关代码片段是我尝试过的一个解决方案.但是当上面有近80条线路时,它会变得凌乱.还有其他方法可以解决这个问题吗?
android xml-attribute actionbarsherlock android-support-library
我有一个看起来像这样的xml:
{ <xml><ep><source type="xml">...</source><source type="text">..</source></ep></xml>}
Run Code Online (Sandbox Code Playgroud)
在这里,我想检索"源类型"的值,其中类型s属性.
我试过这样,但它不起作用:
DocumentBuilderFactory domFactory = DocumentBuilderFactory.newInstance();
try {
DocumentBuilder builder = domFactory.newDocumentBuilder();
Document dDoc = builder.parse("D:/workspace1/ereader/src/main/webapp/configurations/config.xml");
System.out.println(dDoc);
XPath xPath = XPathFactory.newInstance().newXPath();
Node node = (Node) xPath.evaluate("//xml/source/@type/text()", dDoc, XPathConstants.NODE);
System.out.println(node);
} catch (Exception e) {
e.printStackTrace();
Run Code Online (Sandbox Code Playgroud)
我也试过这个:
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
InputSource is = new InputSource(new StringReader("config.xml"));
Document doc = builder.parse(is);
NodeList nodeList = doc.getElementsByTagName("source");
for (int i = 0; i < nodeList.getLength(); i++) {
Node node = nodeList.item(i);
if (node.hasAttributes()) { …Run Code Online (Sandbox Code Playgroud) 我正在尝试生成C#,它会像这样创建一个XML片段.
<device_list type="list">
<item type="MAC">11:22:33:44:55:66:77:88</item>
<item type="MAC">11:22:33:44:55:66:77:89</item>
<item type="MAC">11:22:33:44:55:66:77:8A</item>
</device_list>
Run Code Online (Sandbox Code Playgroud)
我在考虑使用这样的东西:
[XmlArray( "device_list" ), XmlArrayItem("item")]
public ListItem[] device_list { get; set; }
Run Code Online (Sandbox Code Playgroud)
作为属性,具有此类声明:
public class ListItem {
[XmlAttribute]
public string type { get; set; }
[XmlText]
public string Value { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
这给了我内部序列化,但我不知道如何将type="list"属性应用于device_list上面.
我正在考虑(但不确定如何编写语法)我需要做的事情:
public class DeviceList {
[XmlAttribute]
public string type { get; set; }
[XmlArray]
public ListItem[] .... This is where I get lost
}
Run Code Online (Sandbox Code Playgroud)
根据Dave的回复进行了更新
public class DeviceList : List<ListItem> { …Run Code Online (Sandbox Code Playgroud) 我正在使用Android从Web解析XML.下面的代码显示了XML的示例.我遇到的问题是我无法获取item标签的字符串值.当我使用name = attributes.getQName(i);它时输出名称,而不是属性的值.
<weatherdata>
<timetags>
<item name="date">
<value>20/04/2012</value>
<unit/>
<image/>
<class>dynamic</class>
<description>The current date</description>
</item>
Run Code Online (Sandbox Code Playgroud) 我正在尝试使两个XML属性互斥.如何创建XSD架构来捕获这种场景?
我想要其中一个
<elem value="1" />
<elem ref="something else" />
Run Code Online (Sandbox Code Playgroud)
但不是
<elem value="1" ref="something else" />
Run Code Online (Sandbox Code Playgroud) 我需要从Python中的子元素中获取属性值列表.
用一个例子来解释是最容易的.
给出一些像这样的XML:
<elements>
<parent name="CategoryA">
<child value="a1"/>
<child value="a2"/>
<child value="a3"/>
</parent>
<parent name="CategoryB">
<child value="b1"/>
<child value="b2"/>
<child value="b3"/>
</parent>
</elements>
Run Code Online (Sandbox Code Playgroud)
我希望能够做到这样的事情:
>>> getValues("CategoryA")
['a1', 'a2', 'a3']
>>> getValues("CategoryB")
['b1', 'b2', 'b3']
Run Code Online (Sandbox Code Playgroud)
它看起来像XPath的工作,但我对所有建议持开放态度.我也想听听你最喜欢的Python XML库.
我在下面的类中收到以下错误:
无法序列化DataObjects.Ingredient类型的成员'Ingredient'.XmlAttribute/XmlText不能用于编码复杂类型.
有什么想法为什么?
[DataContract]
[Serializable]
[XmlRoot("ingredient")]
public class Ingredient
{
private string id;
private string name;
private string description;
private IngredientNutrient[] nutrients;
public Ingredient(string id, string name, string description, IngredientNutrient[] nutrients)
{
this.id = id;
this.name = name;
this.description = description;
this.nutrients = nutrients;
}
public Ingredient(string id, string name, string description)
{
this.id = id;
this.name = name;
this.description = description;
}
public Ingredient()
{
}
[DataMember]
[XmlAttribute("id")]
public string ID
{
get { return this.id; }
set { …Run Code Online (Sandbox Code Playgroud) 我正在尝试创建一个可以作为jar库轻松添加到android项目的android组件.
为此,我必须在"res/values/attr.xml"中创建新的xml属性,我使用路径添加到我的图形xml元素:
xmlns:app="http://schemas.android.com/apk/res/com.component.mypackage"
Run Code Online (Sandbox Code Playgroud)
然后我将这个项目作为jar库导入另一个项目.要在新项目中创建我的图形组件,我必须更改以下路径:
xmlns:app="http://schemas.android.com/apk/res/com.mylibrary"
Run Code Online (Sandbox Code Playgroud)
但路径不正确:找不到自定义属性.
我设法将R文件集成到库jar中,我可以从我的xml访问它来声明一个自定义组件,如下所示:
<PreferenceScreen
xmlns:android = "http://schemas.android.com/apk/res/android"
xmlns:app = "http://schemas.android.com/apk/res/com.myLibraryPackage">
<com.myLibraryPackage.mySelfComponent
android:title="Name"
android:key="name"
app:hintText="Input your name"
android:dialogTitle="Your name "
app:validator="com.myLibraryPackage.myValidatorClass" />
Run Code Online (Sandbox Code Playgroud)
奇怪的是,如果我将文件attr.xml放在项目的资源中,它就可以工作,这意味着它找到了com.myLibraryPackage.mySelfComponent.在那种情况下,为什么它也找不到com.myLibraryPackage?
(我也试过更换
xmlns:app="http://schemas.android.com/apk/res/com.myLibraryPackage"
Run Code Online (Sandbox Code Playgroud)
通过
xmlns:app="http://schemas.android.com/apk/res/com.myApplicationPackage"
Run Code Online (Sandbox Code Playgroud)
但它仍然无法正常工作)
我宁愿使用jar来促进它在项目中的集成!
有没有人遇到这样的问题谁可以帮助我?
谢谢.
我正在使用的一些SVG/XML文件在属性名称中包含破折号和冒号 - 例如:
<g>
<a xlink:href="http://example.com" data-bind="121">...</a>
</g>
Run Code Online (Sandbox Code Playgroud)
我试图找出如何使用解组这些属性golang的encoding/xml包.虽然虚线属性有效,但带冒号的属性不起作用:
package main
import (
"encoding/xml"
"fmt"
)
var data = `
<g>
<a xlink:href="http://example.com" data-bind="121">lala</a>
</g>
`
type Anchor struct {
DataBind int `xml:"data-bind,attr"` // this works
XlinkHref string `xml:"xlink:href,attr"` // this fails
}
type Group struct {
A Anchor `xml:"a"`
}
func main() {
group := Group{}
_ = xml.Unmarshal([]byte(data), &group)
fmt.Printf("%#v\n", group.A)
}
Run Code Online (Sandbox Code Playgroud)
这些看似合法的属性名称; 任何想法如何提取xlink:href一个?谢谢.
xml-attribute ×10
xml ×6
android ×3
java ×2
.net ×1
.net-2.0 ×1
boolean ×1
c# ×1
complextype ×1
go ×1
parent-child ×1
python ×1
saxparser ×1
schema ×1
xml-parsing ×1
xmlnode ×1
xpath ×1
xsd ×1